如何在WCF中使用超时?我知道您可以为客户端绑定配置sendTimeout和receiveTimeout.但它们如何运作?
MSDN将sendTimeout描述为:
TimeSpan值,指定为完成发送操作提供的时间间隔.该值应大于或等于零.默认值为00:01:00.
什么是发送操作/接收操作?
客户端:
SendTimeout用于初始化OperationTimeout,它控制发送消息的整个交互(包括在请求 - 回复情况下接收回复消息).从CallbackContract方法发送回复消息时,此超时也适用.
打开和关闭通道时使用OpenTimeout和CloseTimeout(当没有传递显式超时值时).
未使用ReceiveTimeout.
服务器端:
发送,打开和关闭超时与客户端(用于回调)相同.
ServiceFramework层使用ReceiveTimeout初始化会话空闲超时.
来源是MSDN论坛上的Brian McNamara.
请参阅"WCF中的超时及其默认值" http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx
绑定超时 - SendTimeout,ReceiveTimeout,OpenTimeout和CloseTimeout.它们可以通过配置或Binding上的代码轻松设置.这些的默认值是1分钟.
ServiceHost具有OpenTimeout和CloseTimeout.OpenTimeout的默认值为1分钟,CloseTimeout的默认值为10秒.
客户端通道超时.有一个OperationTimeout,你可以通过将频道转换为IContextChannel来设置它.默认值为1分钟.tcpout上的Ttimeout,称为ChannelInitializationTimeout,其默认值为5秒.
ASPNET.有关机超时,就像服务主机关闭超时一样,默认为90秒.ExecutionTimeout,就像我们的操作超时一样,默认为110秒.