【问题标题】:Is WCF binding SendTimeout only used to initialize channel OperationTimeout?WCF 绑定 SendTimeout 是否仅用于初始化通道 OperationTimeout?
【发布时间】:2015-06-16 04:17:06
【问题描述】:

注意:我读过thisthatyonder,但我是否得到这个仍然不完全清楚:

根据 MSDN,WCF 绑定 SendTimeout 以及 WCF IContextChannel OperationTimeout 两者:

获取或设置操作必须完成或引发异常的时间段。 (如果在绑定或通道上启用了事务流,则操作的执行时间可能会超过指定的超时时间。在这种情况下,由于超时超时,操作会失败,并且事务会适当地中止。)

还有根据MSDN:

SendTimeout - 用于初始化 OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。

所以,Binding 的SendTimeout 属性根本没有用作真正的超时,它只是(??!)用于初始化默认值(所有?)沟通渠道的OperationTimeout

注意:我验证了当我将Binding.SendTimeout 设置为非默认值时,ChannelFactory.CreateChannel(使用绑定初始化工厂时)返回的通道确实与设置的 SendTimeout 具有相同的IContextChannel.OperationTimeout

还有什么更多的吗,或者 SendTimeout 确实只是通道上 OperationTimeout 的初始化值?

【问题讨论】:

    标签: wcf timeout wcf-binding


    【解决方案1】:

    一次性回答您的问题:

    不,不是(仅用于初始化 OperationContext)。

    它也用于覆盖写操作本身的超时。我也回答了这个here

    【讨论】:

      【解决方案2】:

      一般来说,绑定上的所有设置都只是为了“设计时间”。在运行时,它们用于初始化作为有效值的通道。

      【讨论】:

      • 确实如此:“ReceiveTimeout – 由服务框架层用于初始化会话空闲超时”。良好的观察力。
      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2011-05-18
      • 2011-03-30
      相关资源
      最近更新 更多