WCF 超时客户端与服务器

Posted

技术标签:

【中文标题】WCF 超时客户端与服务器【英文标题】:WCF timeout client vs server 【发布时间】:2011-03-22 05:37:10 【问题描述】:

谁能向我解释一下服务器上的超时配置与客户端上的超时配置有什么区别?例如,如果客户端将 sendTimeout 设置为 5 分钟,而服务器上的配置将其设置为 1 分钟,会发生什么情况?客户端自发起通信后是否占优势?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我想我明白了,看看http://omsite.blogspot.com/2008/04/playing-with-wcf-nettcpbinding-timeouts.html

当客户端发起对服务端的调用时,客户端的sendTimeout和服务端的receiveTimeout生效。客户端必须在服务器上设置的 receiveTimeout 过期之前发送(或推送)所有数据。服务器必须在客户端设置的 sendTimeout 过期前完成操作并将结果返回给客户端。

如果角色互换,意味着服务器正在向客户端打开通信(如回调等),那么服务器上的 sendTimeout 和客户端上的 receiveTimeout 就会发挥作用。

还有 OpenTimeout 和 CloseTimeout 控制通道连接建立超时并在较低通道级别(线路套接字等)工作

【讨论】:

此答案中的链接已失效。 是的,链接失效了。我找不到那个帖子:(。但是我在我的回答中抓住了要点 @ShreedharKotekar 这是错误的。 receiveTimeout 被客户端忽略。 On the server it is used to determine idle in session based bindings.【参考方案2】:

在测试你问的场景。请求的超时时间是5分钟,这个是在客户端定义的

关于客户端超时

SendTimeout - 用于初始化 OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。当从回调合约方法发送回复消息时,此超时也适用。

ReceiveTimeout - 未使用

关于服务端超时

SendTimeout 和客户端一样

ReceiveTimeout – 服务框架层使用它来初始化会话空闲超时,该超时控制会话在超时之前可以空闲多长时间。

见https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/configuring-timeout-values-on-a-binding

【讨论】:

以上是关于WCF 超时客户端与服务器的主要内容,如果未能解决你的问题,请参考以下文章

WCF 显示超时错误

异步 WCF 服务超时

为啥 WCF 不支持服务端超时?

WCF 超时问题?

超时 WCF 服务

WCF 服务超时