2009-02-11 59 views
3

我使用C#,創造了從客戶端一個ASP.Net ASMX Web服務代理,通過使用添加Web引用... VSTS的特點2008年超時在C#中的異步Web服務調用

我我正在使用異步方法調用模型(即調用AsyncXXX方法,它將立即返回)並處理完整的事件(即使從服務器端收到響應時,我也會添加事件處理程序來處理完整事件)。

我發現如果服務器很長一段時間沒有響應,那麼完整的事件不會被觸發。

我的問題是,

  1. 它是預期的功能或我的錯誤,如果從服務器後調用AsyncXXX方法沒有響應,完整事件處理程序將不會被調用?

  2. 是否有任何方法來分配超時值 - 以便我不等待完整的事件處理程序無限?

由於事先 喬治

回答

-1

SoapHttpClientProtocol,你的代理人應當繼承了其祖先WebClientProtocol繼承了Timeout屬性。它可以回答你的第二個問題。

+4

我試過,但它似乎只適用於同步接口。 – George2 2009-02-11 13:08:04

2

在您的web服務的web.config中,您可以設置超時(如果是的話,您還需要更改爲不處於調試模式)。這應該會導致它拋出一個異常來提升你完成的事件。然後您將需要檢查異常以查看它是否通過。

<system.web> 
    <httpRuntime executionTimeout="120" /> 
</system.web> 
+0

謝謝ck,你的意思是web.config中的確切配置項目? – George2 2009-02-12 09:23:53

0

如果你想你的web服務永不超時,你可以把這個線在Web服務類:

this.Timeout = System.Threading.Timeout.Infinite;