Global.asax.cs中的静态ChannelFactory抛出CommunicationObjectFaultedException

时间:2010-07-21 17:10:44

标签: c# asp.net wcf global-asax

我在Global.asax.cs文件中使用以下代码:

public static readonly IMyCommunicationService GlobalCommunicationChannel =
        new ChannelFactory<IMyCommunicationService>("NetTcpBinding_IMyCommunicationService").CreateChannel();

我从每个网站访问静态var“GlobalCommunicationChannel”。

到目前为止,这种方法运作良好。但有时候,在生产环境中,我得到一个 CommunicationObjectFaultedException 。它说我不能使用我的GlobalCommunicationChannel对象作为对象“System.ServiceModel.Channels.ServiceChannel”处于故障状态

我得到的信息不止于此。 几分钟后它再次运作。不知道为什么。我认为连接已经重新建立或类似的东西。

导致此错误的原因是什么? 有没有办法在将来添加try / catch和重试时避免此错误?

非常感谢您的回答!

1 个答案:

答案 0 :(得分:0)

检查您的SessionMode值:

  

默认情况下,此属性的值   是允许的,这意味着如果一个   客户端使用基于会话的绑定   有了WCF服务实现,   服务建立和使用   会议提供。 (source

在您的服务合同中,尝试将会话设置为NotAllowed。

[ServiceContract(SessionMode=SessionMode.NotAllowed)]

By default, the maximum number of sessions a service host accepts is 10。因此,您可以检查是否可以复制与10个会话相关的问题。