“WCF服务连接丢失”问题及解决
2012-05-11 10:08
302 查看
一 现象
在“输出-调试”窗口外输出如下异常信息System.ServiceModel.CommunicationException: 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“10675199.02:48:05.4775807”。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。 --- 内部异常堆栈跟踪的结尾 --- 在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) 在 System.ServiceModel.Channels.FramingDuplexSessionChannel.EndTryReceive(IAsyncResult result, Message& message) 在 System.ServiceModel.Dispatcher.DuplexChannelBinder.EndTryReceive(IAsyncResult result, RequestContext& requestContext) 在 System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result, RequestContext& requestContext)
二 服务器端异常捕捉方式
服务器端的IContextChannel(OperationContext.Current.Channel).Faulted事件
三 原因分析及解决
原因1:消息包长度受限
解决:加长长度,参考http://www.cnblogs.com/snowsky/archive/2010/12/22/1913601.html
示例:
服务端配置:<basicHttpBinding> <binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding> </basicHttpBinding> <behavior name="bcf"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> <dataContractSerializer maxItemsInObjectGraph="2147483647" /> </behavior> </serviceBehaviors>
客户端配置:
<behaviors> <endpointBehaviors> <behavior name="bhc"> <dataContractSerializer maxItemsInObjectGraph="2147483647"/> </behavior> </endpointBehaviors> </behaviors> <basicHttpBinding> <binding name="basicBinding" maxReceivedMessageSize="2147483647"></binding> </basicHttpBinding>
原因2、客户端创建使用完服务代理后未回收此资源
解决:回收
示例:
using (ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>(new WSHttpBinding(), "http://127.0.0.1:9999/calculatorservice")) { ICalculator proxy = channelFactory.CreateChannel(); using (proxy as IDisposable) { //哒哒哒... } }
相关文章推荐
- Windows无法连接到System Event Notification Service服务问题解决
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- MySQL之——MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 问题解决
- 控制台程序托管WCF服务跨域访问问题解决
- Bitnami Redmine服务全部丢失问题的解决办法(亲测)
- 解决android调用IIS Express中的WCF服务时,出现错误400问题
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- Centos修改DNS重启或重启network服务后丢失问题解决方法
- 问题解决_WCF_WCF 接收我服务的 HTTP 响应时发生错误
- WCF+Restfull服务 提交或获取数据时数据大小限制问题解决方案
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 问题解决
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 问题解决
- ASP.NET 状态服务 及 session丢失问题解决方案总结
- @Redis Desktop Manager无法连接虚拟机中启动的redis服务问题解决
- 解决ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务的问题
- 解决VMM 0x80338029 代理连接丢失问题
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 问题解决
- [导入]ASP.NET 状态服务 及 丢失问题解决方案总结
- Android sdk更新过程中出现问题 (连接不上Google的服务资源)解决办法