2008-10-23 117 views
61

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

MSDN描述的SendTimeout为:

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

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

回答

61

客户端:

  • 的SendTimeout被用来初始化OperationTimeout,支配用于发送消息(包括接收的请求 - 回复时的回复消息)整个相互作用。从CallbackContract方法发送回复消息时,此超时也适用。
  • 打开和关闭通道时(未传递显式超时值时)使用OpenTimeout和CloseTimeout。
  • ReceiveTimeout未使用。

服务器端:

  • 发送,打开,并关闭超时相同的客户端(回调)。
  • ReceiveTimeout由ServiceFramework层用于初始化会话空闲超时。

来源是Brian McNamara on MSDN forums

+0

此链接已死,任何人都可以更新它? – BrettRobi 2010-05-03 17:51:54

9

请参阅 “在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分钟。 Tcp传输上的Ttimeout,称为 ChannelInitializationTimeout,其默认值为5秒。

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