WCF服务在类库中的引用
在类库中引用了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服务在类库中的引用的更多相关文章
- WCF服务端开发和客户端引用小结
1.服务端开发 1.1 WCF服务创建方式 创建一个WCF服务,总是会创建一个服务接口和一个服务接口实现.通常根据服务宿主的不同,有两种创建方式. (1)创建WCF应用程序 通过创建WCF服务应用程序 ...
- WCF服务创建与使用(请求应答模式)
不说废话,直接上代码.以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Servic ...
- 从Web Service和Remoting Service引出WCF服务
本篇先通过Web Service和Remoting Service创建服务,抛砖引玉,再体验WCF服务.首先一些基本面: 什么是WCF? Windows Communication Foundatio ...
- 使用IIS发布WCF服务
上一篇是Windows服务为宿主的WCF服务,现在用IIS为宿主发布WCF服务. 第一步:肯定是新建一个WCF服务啦[是WCF服务应用程序],然后在解决方案上再次添加一个新项目[我们选择WCF服务库, ...
- WCF初探-9:WCF服务承载 (下)
在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念.环境.特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍.为了更好的说明各寄宿环境特点,本实例采用Http和net. ...
- WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发
今天我们继续WCF分布式开发步步为赢(3)WCF服务元数据交换.配置及编程开发的学习.经过前面两节的学习,我们了解WCF分布式开发的相关的基本的概念和自定义宿主托管服务的完整的开发和配置过程.今天我们 ...
- 编写寄宿于windows服务的WCF服务
由于业务中有些任务需要在后台静默长期运行,或者有些服务队响应的要求比较苛刻,这样的WCF服务就不适合寄宿于IIS中.IIS每隔一段时间w3wp进程会闲置超时,造成服务的运行停止,因此这种耗时或者定时任 ...
- WCF开发实战系列三:自运行WCF服务
WCF开发实战系列三:自运行WCF服务 (原创:灰灰虫的家 http://hi.baidu.com/grayworm)上一篇文章中我们建立了一个WCF服务站点,为WCF服务库运行提供WEB支持,我们把 ...
- WCF开发实战系列四:使用Windows服务发布WCF服务
WCF开发实战系列四:使用Windows服务发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇文章中我们通过编写的控制台程序或WinForm程序来为本 ...
随机推荐
- 深入SpringBoot:自定义Endpoint
前言 上一篇文章介绍了SpringBoot的PropertySourceLoader,自定义了Json格式的配置文件加载.这里再介绍下EndPoint,并通过自定EndPoint来介绍实现原理. En ...
- electron开发(一)
0. 简介 http://electron.atom.io/ 官网 https://www.v2ex.com/t/277623 基于 Electron 的 Linux 下的网易云音乐 https: ...
- 刨根问底U3D---Vector3 你到底是蔬菜呢还是水果呢?
事情的起因还是因为一段代码,因为在做一个2D TileBase的游戏 所以需要有一个简单的 Tile坐标到世界坐标的变换 public static Vector3 GetTileWorldPosBy ...
- mfc ui 3 swf
引用:http://zhidao.baidu.com/question/420956871.html 作为一个自定义的资源导入,然后用LoadResource载入导入的资源.MAKEINTRESOUR ...
- C语言回顾-运算符和循环
1.运算符 连接操作数,构成表达式 按功能划分: 1)算术运算符 + - * / % 2)关系运算符 3)逻辑运算符 4)按位运算符 按操作数划分: 1)单目运算符 2)双目运算符 3)三目运算符 ...
- IsBackground的理解
1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的. 2.当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束. ...
- (转) cocos2dx 显示中文
cocos2dx 中文显示 分类: cocos2dx 2014-01-18 10:31 253人阅读 评论(0) 收藏 举报 目录(?)[+] 总结一句话,就是UTF-8编码. 1. 中文FNT字体文 ...
- CSS 盒子模型概述
一.简介 CSS 盒子模型(元素框)由元素内容(content).内边距(padding).边框(border).外边距(margin)组成. 盒子模型,最里面的部分是实际内容:直接包围内 ...
- python 学习笔记十三 JQuery(进阶篇)
jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. 安装jQuery 有两个版本的 jQuery 可供下载: Production versio ...
- CSS3的chapter3
CSS的常用样式分为几大类: 字体样式(font,color, text-decoration ,text-shadow) 元素样式(width,height,margin,padding,opaci ...