【问题标题】:WCF routing service channel shutdownWCF 路由服务通道关闭
【发布时间】:2013-01-29 10:12:42
【问题描述】:

错误信息如下:

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

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

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

【问题讨论】:

    标签: c# wcf iis-7


    【解决方案1】:

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

    • 不要抛出异常,抛出 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"));

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多