【问题标题】:In WCF, does a timeout fault the channel?在 WCF 中,超时是否会导致通道出错?
【发布时间】:2010-04-15 15:44:07
【问题描述】:

在 WCF 中,请求-响应操作的超时是否会使客户端的通道出错?

如果服务器发送响应超时,是不是服务器端的通道故障?

【问题讨论】:

    标签: wcf timeoutexception


    【解决方案1】:

    是的,超时会使通道出错 - 并且总是只有 一个 通道链接客户端和服务器 - 服务器没有自己的通道...

    你基本上有:

    +-----------+                       +-----------+
    |           |_______________________|           |
    |  Client   |     The Channel       |  Server   |
    |           |-----------------------|           |
    +-----------+                       +-----------+
    

    实际上只有一个通道连接这两个位。至于超时 - 如果两端为相同的超时定义不同的值,较小的值将“获胜”并变得相关 - 较高的值(在另一端)不被考虑在内。

    【讨论】:

    • 也许我就是这么表达的,但我是从每个系统的角度来看的。如果通道的任一端都发生超时,在这两种情况下,通道是否会因“超时”方而出现故障?
    • 是的 - 每次超时的较小值将“获胜” - 如果您的客户端有 100 年的超时时间,但您的服务器设置为 5 秒 - 两者之间的通道将在 5 秒后出现故障.
    • 你的 ASCII 艺术是丑陋的,但很有启发性。谢谢。
    • @marc_s,是否存在超时不会导致通道故障的情况?我没有看到这个:stackoverflow.com/q/13402977/546561
    【解决方案2】:

    正确,超时会使通道出错。您可以在客户端和服务器端设置最大超时时间。

    【讨论】:

    • 两个值中较小的一个将“获胜”
    【解决方案3】:

    这取决于哪个超时。

    如果您点击绑定的SendTimeoutReceiveTimeout(在我的情况下为NetTcpBinding),那么是的,通道将出现故障。

    但是,如果您点击服务的OperationTimeout(在我的情况下为 DuplexChannel),那么您只会得到一个TimeoutException,并且该通道将不会出错。

    【讨论】:

      猜你喜欢
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多