2010-08-24 46 views
4

我正在使用Web引用調用外部服務。知識產權是動態的,所以我一個接一個地給他們打電話,一切正常。定期地,一些IP將不可用,並且正在處理我正在處理的超時。問題是每次通話超時所需的時間約爲30秒。我試圖改變ws的超時屬性爲5秒,但它似乎沒有什麼區別。有人可以幫助我嗎?C#Web引用調用超時

+1

你能發表一些你如何調用服務的代碼,以及你如何設置超時? – taylonr 2010-08-24 18:22:45

+0

//全球物業 private WebService.Service1 _ws = new WebService.Service1(); //在構造函數中 _ws.Timeout = 5000; //方法調用 return _ws.create_session(string.Concat(_Domain,@「\」,_UserName),_Password,out lErrorCode); – Jim 2010-08-24 18:27:56

+0

除非有關於這個問題的更多信息,否則我只是推薦一個徹底的調試會話。仔細檢查代碼,並確保它是對Web服務的調用,而不是其他事情花費那麼長時間。如果是這樣,那麼當您單步執行代碼時,請檢查在進行調用時Timeout屬性的值是多少。您可能已經將Timeout設置爲5000,但也許其他設置有所不同。 – 2010-08-24 20:45:27

回答

0

你說你改變了「ws的超時屬性爲5秒」。如果您要更改服務器上的超時時間,那麼當您的客戶端無法連接時,這不會對您有所幫助。

您正在使用「Web參考」,因此我假設您有一個從System.Web.Services.Protocols.SoapHttpClientProtocol派生的客戶端類。該類來自System.Web.Services.Protocols.WebClientProtocol,它具有Timeout屬性。嘗試在撥打電話之前更改客戶端上的屬性,並查看是否獲得更好的結果。

+0

這就是我正在改變的(在客戶端上)。 ws是我無法訪問的外部ws。 – Jim 2010-08-24 18:41:31

+0

並且是的,我正在設置WebClientProtocol.Timeout = 5 – Jim 2010-08-24 18:42:26

1

下面是答案我一直在尋找: Adjusting HttpWebRequest Connection Timeout in C#

****重要片段:****

HttpWebRequest.Timeout屬性的MSDN文檔:

一域名系統(DNS)查詢最多可能需要秒才能返回或時間爲 。如果您的請求包含需要解析的主機名,並且您將Timeout設置爲小於15秒的值,則可能需要15秒或更長時間纔會引發WebException,以指示請求超時。