2010-04-08 86 views
3

我有一個網頁(.aspx),調用第三方Web服務來獲取一些數據。通常需要幾秒鐘才能獲得響應,然後頁面的其餘部分將加載。有時由於網絡服務停止或互聯網連接等原因,通話卡住,頁面只是掛在那裏,不會加載。如何取消Web服務呼叫,如果它沒有響應

我的問題是:

1)有沒有辦法中止/取消設定的時間量後,Web服務調用?

2)在調用Web服務之前,甚至可以驗證Web服務的狀態嗎?

謝謝。

回答

4

這個問題會指出你在正確的方向。它討論瞭如何爲Web服務設置默認超時,因此如果時間過長,它會自動取消。

timeout for asynchronous web service call in C#

來驗證服務狀態的唯一途徑是通過調用它。你可以通過你得到的迴應來判斷它是否下降。 (500 404等)。

以下是兩者之間的區別以及Microsoft推薦的內容。

http://msdn.microsoft.com/en-us/library/ms998562.aspx#scalenetchapt10_topic14

+0

感謝您的快速回復。 您能解釋一下在配置文件中設置executionTimeout和設置代理的超時屬性之間有什麼區別嗎?這兩個是一樣的嗎,一個價值是否會超過另一個? 謝謝! – drizzle 2010-04-08 20:18:58

0

有多種方式來處理這類問題。從非基於Web的應用程序遷移到Web應用程序最大的困擾之一就是UI的響應速度。如果你希望你的界面對用戶更加敏感,你可能想要考慮使用AJAX來獲得異步結果。當頁面加載時,需要第三方Web服務的部分可以顯示某種加載指示(其他所有內容立即顯示),然後通過RPC,內容在加載完成時顯示(或者如果經過了一定的時間,顯示超時錯誤)。