2008-10-23 111 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秒。