WCF路由服务通道关闭

时间:2013-01-29 10:12:43

标签: c# wcf iis-7

错误消息如下:

  

此频道不能再用作发送消息作为输出   由于服务器启动的关闭,会话已自动关闭。或   通过设置禁用自动关闭   DispatchRuntime.AutomaticInputSessionShutdown为false,或者考虑   使用远程服务器修改关闭协议。

当我向WCF路由器创建Web请求(wsHttpBinding或BasicHttpBinding到NetTcpBinding)并且路由器然后请求WinService时,会发生这种情况。一旦WinService抛出异常,下一个请求就会给出上面的错误消息。它由WCF路由器创建。 在任何地方都没有解决方案,我花了好几天找到一个。

没有解决方案的类似问题的链接:

1 个答案:

答案 0 :(得分:2)

我所做的工作解决方案如下:

  • 不要抛出异常,抛出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
}
  • 然后使用定义的枚举来代替Exception抛出FaultException:
  

抛出新的FaultException(ErrorCode.ERROR,新的FaultReason(“blah”),新的FaultCode(“Sender”));

  • 就是这样!现在,您可以发送生成此异常的请求,但不会关闭通道