61

超时如何在 WCF 中工作?例如,我知道您可以为客户端绑定配置sendTimeoutreceiveTimeout。但它们是如何工作的?

MSDN 将sendTimeout描述为:

一个 TimeSpan 值,它指定为完成发送操作提供的时间间隔。此值应大于或等于零。默认值为 00:01:00。

什么是发送操作/接收操作?

4

3 回答 3

62

客户端:

  • SendTimeout 用于初始化 OperationTimeout,它控制发送消息的整个交互(包括在请求-回复情况下接收回复消息)。当从 CallbackContract 方法发送回复消息时,此超时也适用。
  • OpenTimeout 和 CloseTimeout 在打开和关闭通道时使用(当没有传递明确的超时值时)。
  • 不使用 ReceiveTimeout。

服务器端:

  • 发送、打开和关闭超时与客户端相同(用于回调)。
  • ServiceFramework 层使用 ReceiveTimeout 来初始化会话空闲超时。

来源是MSDN 论坛上的 Brian McNamara

于 2008-10-23T16:51:45.283 回答
9

请参阅“WCF 中的超时及其默认值” http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx

绑定-SendTimeout、ReceiveTimeout、OpenTimeout 和 CloseTimeout 的超时。它们可以通过配置或绑定上的代码轻松设置。这些的默认值为 1 分钟。

ServiceHost 有 OpenTimeout 和 CloseTimeout。OpenTimeout 的默认值为 1 分钟,CloseTimeout 的默认值为 10 秒。

客户端通道超时。有一个 OperationTimeout,您可以通过将频道转换为 IContextChannel 来设置它。其默认值也是 1 分钟。tcp传输上的Ttimeout,称为ChannelInitializationTimeout,默认值为5秒。

ASP 网络。有关闭超时,就像服务主机关闭超时一样,默认是90秒。ExecutionTimeout,就像我们的操作超时一样,默认是110秒。

于 2011-10-16T01:58:06.570 回答
4

除了该帖子上的内容之外,还有在客户端定义的操作超时。看到这个:

http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

于 2009-09-09T20:46:39.347 回答