我在Global.asax.cs文件中使用以下代码:
public static readonly IMyCommunicationService GlobalCommunicationChannel =
new ChannelFactory<IMyCommunicationService>("NetTcpBinding_IMyCommunicationService").CreateChannel();
我从每个网站访问静态var“GlobalCommunicationChannel”。
到目前为止,这种方法运作良好。但有时候,在生产环境中,我得到一个 CommunicationObjectFaultedException 。它说我不能使用我的GlobalCommunicationChannel对象作为对象“System.ServiceModel.Channels.ServiceChannel”处于故障状态。
我得到的信息不止于此。 几分钟后它再次运作。不知道为什么。我认为连接已经重新建立或类似的东西。
导致此错误的原因是什么? 有没有办法在将来添加try / catch和重试时避免此错误?
非常感谢您的回答!
答案 0 :(得分:0)
检查您的SessionMode值:
默认情况下,此属性的值 是允许的,这意味着如果一个 客户端使用基于会话的绑定 有了WCF服务实现, 服务建立和使用 会议提供。 (source)
在您的服务合同中,尝试将会话设置为NotAllowed。
[ServiceContract(SessionMode=SessionMode.NotAllowed)]
By default, the maximum number of sessions a service host accepts is 10。因此,您可以检查是否可以复制与10个会话相关的问题。