在类库中引用了WCF服务,悲剧降临了,追踪日志看到下边一串:

------------------------------------------------------------------------------

出错时间: 2015/1/22 14:54:40
出错信息: 在 ServiceModel 客户端配置部分中,找不到引用协定“WiseUC.functionsPortType”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素。
详细信息: 在 System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
在 System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
在 System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
在 System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
在 System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
在 System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
在 System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
在 System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
在 System.ServiceModel.ClientBase`1..ctor()
在 ServiceContentInstantMessengerWiseUC.WiseUC.functionsPortTypeClient..ctor() 位置 D:\2.hWorking\电子政务平台\trunk\04.源代码\框架后台服务\服务内容\ServiceContentInstantMessengerWiseUC\Service References\WiseUC\Reference.cs:行号 243
在 FrameWorkService.Imp.ContentInstantMessengerWiseUC.bSpellInfoParameter(String cSenderName, String cReceiverNames, String cInfoTitle, String cInfoContent, String cLinkUrl, String cSendStyle, String cKeyCode, String cServiceUrl) 位置 D:\2.hWorking\电子政务平台\trunk\04.源代码\框架后台服务\服务内容\ServiceContentInstantMessengerWiseUC\ContentInstantMessengerWiseUC.cs:行号 242
在 FrameWorkService.Imp.ContentInstantMessengerWiseUC.SendMessage(String sender_userID, String acceptor_userID, String message) 位置 D:\2.hWorking\电子政务平台\trunk\04.源代码\框架后台服务\服务内容\ServiceContentInstantMessengerWiseUC\ContentInstantMessengerWiseUC.cs:行号 97

-------------------------------------------------------------------------------------------------------

说得很明白,是因为“未找到应用程序的配置文件,或者是因为客户端元素中找不到与此协定匹配的终结点元素”,可这句话几乎等于一句废话,因为我曾经信了这句话,将类库中的.config文件中的复制到了主程序中(就是那个有Main函数的.exe程序)的.config文件中,当时是管用了,但后来我又在另一个类库中引用了同样的WCF服务,但是悲剧再次降临。

 <system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="functionsBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.3.188:14132/Interface/www/soap/stdserver.php?wsdl"
binding="basicHttpBinding" bindingConfiguration="functionsBinding"
contract="WiseUC.functionsPortType" name="functionsPort" />
</client>
</system.serviceModel>

-------------------------------------------------------------------------------------------------------

于是,我想到自已能不能用代码完成这一堆配置信息的设置而不再依赖于.config文件中的这一堆,然后我万分辛苦地百度-试验-百度-试验,在绝望的终点终于发现了一篇博客,于是,我成功了,虽然这个成功看起来似乎并不完美,但是至少能解决眼前的大问题。(但这个做法目前无法控制传输的字符串长度与等待时间等参数,如果以后见到处理办法我会补上来,也希望诸位在其他地方或您就会的话,留个言或留个链接,不胜感谢!)

下边是我在项目中使用的源码:

string cServiceUrl="http://192.168.3.188:14132/Interface/www/soap/stdserver.php?wsdl";
ServiceContentInstantMessengerWiseUC.WiseUC.functionsPortTypeClient kClient = new ServiceContentInstantMessengerWiseUC.WiseUC.functionsPortTypeClient(new System.ServiceModel.BasicHttpBinding(), new System.ServiceModel.EndpointAddress(cServiceUrl));

ServiceContentInstantMessengerWiseUC.WiseUC.returnArr kReturn = kClient.sendmsgs(msg);
kClient.Close(); return kReturn.info;

重点在于实例化WCF客户端对象时的两个参数,加上这两个参数以后,那个类库中的.config文件就不再需要了,也不必在把.config中的那一堆配置复制到主程序中了。

-------------------------------------------------------------------------------------------------------

参考博客:http://blog.163.com/liuyang1285@126/blog/static/1289130862011626104116229/

WCF服务在类库中的引用的更多相关文章

  1. WCF服务端开发和客户端引用小结

    1.服务端开发 1.1 WCF服务创建方式 创建一个WCF服务,总是会创建一个服务接口和一个服务接口实现.通常根据服务宿主的不同,有两种创建方式. (1)创建WCF应用程序 通过创建WCF服务应用程序 ...

  2. WCF服务创建与使用(请求应答模式)

    不说废话,直接上代码.以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Servic ...

  3. 从Web Service和Remoting Service引出WCF服务

    本篇先通过Web Service和Remoting Service创建服务,抛砖引玉,再体验WCF服务.首先一些基本面: 什么是WCF? Windows Communication Foundatio ...

  4. 使用IIS发布WCF服务

    上一篇是Windows服务为宿主的WCF服务,现在用IIS为宿主发布WCF服务. 第一步:肯定是新建一个WCF服务啦[是WCF服务应用程序],然后在解决方案上再次添加一个新项目[我们选择WCF服务库, ...

  5. WCF初探-9:WCF服务承载 (下)

    在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念.环境.特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍.为了更好的说明各寄宿环境特点,本实例采用Http和net. ...

  6. WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发

    今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们 ...

  7. 编写寄宿于windows服务的WCF服务

    由于业务中有些任务需要在后台静默长期运行,或者有些服务队响应的要求比较苛刻,这样的WCF服务就不适合寄宿于IIS中.IIS每隔一段时间w3wp进程会闲置超时,造成服务的运行停止,因此这种耗时或者定时任 ...

  8. WCF开发实战系列三:自运行WCF服务

    WCF开发实战系列三:自运行WCF服务 (原创:灰灰虫的家 http://hi.baidu.com/grayworm)上一篇文章中我们建立了一个WCF服务站点,为WCF服务库运行提供WEB支持,我们把 ...

  9. WCF开发实战系列四:使用Windows服务发布WCF服务

    WCF开发实战系列四:使用Windows服务发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇文章中我们通过编写的控制台程序或WinForm程序来为本 ...

随机推荐

  1. 使用复合索引代替单键索引,来避免单键有null值的情况

    查看原表: SQL> select count(*) from t1; COUNT(*) ---------- 3229088 SQL> select count(*) from t1 w ...

  2. IOS 谓词

    // 谓词 Person *person = [[Person alloc]init]; person.name = @"zhang san"; person.age = 20; ...

  3. session跟cookies区别

    Session和Cookie的使用总结: Session和cookie都是asp.Net中的内置对象,至于他们有什么区别,在这里就不在多说,现在来说说一些比较实用点的东西: 我们知道网站都有一个后台管 ...

  4. zigbee学习之路(五):定时器1(查询方式)

    一.前言 今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作. 二.原理与分析 谈到定时器的控制,我们最先想到的是要给它赋初 ...

  5. asp.net core 使用 StaticFiles 中间件 (不完整翻译)

    原文地址:https://docs.asp.net/en/latest/fundamentals/static-files.html 设置静态资源根目录 在 Startup.cs 中的 Configu ...

  6. VC++6.0在Win7以上系统上Open或Add to Project files崩溃问题 解决新办法

    崩溃原因是和office高版本冲突,比如我64位win7装了64位office2013及visio就遇到了这个问题(我很纳闷,记得重装系统前装的是32位office2013及visio就未曾遇到该问题 ...

  7. MQ框架的比较

    MQ框架的比较 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据 ...

  8. Linux -- 文件统计常用命令

    标签(空格分隔): Linux sort -- 文件内排序命令 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次比较其ASCII码. 按每行升序排序: sort seq.tx ...

  9. GridControl

    隐藏Drag a column header here to group by that column https://www.devexpress.com/Support/Center/Questi ...

  10. mysql exists 和 in的效率比较

    这条语句适用于a表比b表大的情况 select * from ecs_goods a where cat_id in(select cat_id from ecs_category b); 这条语句适 ...