注意:我读了这个、那个和那边,仍然不完全清楚我是否得到了这个:
根据MSDN:,WCF绑定SendTimeout和WCF IContextChannel OperationTimeout都是
获取或设置操作必须完成或引发异常的时间段(如果在绑定或通道上启用了事务流,则执行操作可能需要比指定的超时更长的时间。在这种情况下,操作会由于超时而失败,事务会适当中止。)
另据MSDN报道:
SendTimeout–用于初始化OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。
因此,绑定的SendTimeout
属性根本不被用作实际超时,它只是(?!)用于初始化(所有?)通信信道的默认OperationTimeout
?
注意:我验证了当我将Binding.SendTimeout
设置为非默认值时,ChannelFactory.CreateChannel
返回的通道(当使用绑定初始化工厂时)确实具有与设置的SendTimeout相同的IContextChannel.OperationTimeout
。
是否还有其他内容,或者SendTimeout确实只是通道上OperationTimeout的初始值设定项值?
通常,绑定上的所有设置都只用于"设计时"。在运行时,它们用于初始化作为有效值的通道。
用一行字回答您的问题:
不,它不是(仅用于初始化OperationContext)。
它还用于覆盖写入操作本身的超时。我在这里也回答了这个问题。