WCF路由服务通道关闭

3
错误信息如下:

由于服务器发起的关闭,输出会话已自动关闭,因此无法再使用此通道发送消息。要么将DispatchRuntime.AutomaticInputSessionShutdown设置为false以禁用自动关闭,要么考虑修改与远程服务器的关闭协议。

当我创建一个Web请求到WCF路由器(wsHttpBinding或BasicHttpBinding到NetTcpBinding),然后路由器请求WinService时,就会出现这种情况。一旦WinService抛出异常,下一个请求就会产生上述错误消息。它是由WCF路由器创建的。在任何地方都没有解决方案,我花了几天时间找到一个。
类似问题的链接(没有解决方案):
1个回答

3
我所做的解决方案如下:
  • 不要抛出异常,而是抛出FaultException

如何实现:

  • 在WinService接口中定义一个响应代码枚举(以下为示例)
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.2152")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "blah")]
public enum ErrorCode
{
    ERROR
}
或者只是
public enum ErrorCode
{
    ERROR
}
  • 如果出现异常,使用定义的枚举类型抛出FaultException:

throw new FaultException(ErrorCode.ERROR, new FaultReason("blah"), new FaultCode("Sender"));

  • 就这样!现在你可以发送请求,如果产生此异常,它不会关闭通道。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接