1. 程式人生 > >WebService 操作超時的問題及其解決辦法

WebService 操作超時的問題及其解決辦法

在執行 WebService 某些方法時會消耗較長的時間,當超出系統預設的時間長度時,系統就會報錯。此時可做如下處理:

1、修改 app.config 檔案,新增如下程式碼:

<httpRuntime executionTimeout="600" />

請求執行超時時間為600秒(預設為110秒)

2、設定  Web services 的 Timeout 屬性

對 XML Web services 的同步呼叫的超時(以毫秒為單位)。預設為 100000 毫秒。

lywSqCommon.sqsdData.GetData getData = new lywSqCommon.sqsdData.GetData();//GetData 為類名

getData.Timeout=700000;//單位為毫秒

指示 XML Web services 客戶端等待同步 XML Web services 請求完成的時間(以毫秒計)。

提示:如果將 Timeout 屬性設定為 Timeout.Infinite,則指示該請求無超時。即使 XML Web services 客戶端可以將 Timeout 屬性設定為無超時,Web 伺服器仍可以在伺服器端使請求超時。

系統將以上面兩項設定的最小者作為操作超時的時間長度。

1. 伺服器端設定超時

在 web.config 的 system.web 裡新增如下配置項:

< httpRuntime
executionTimeout="30"
/>

以上時間單位是秒.

記得要把 web.config 的 debug 模式關閉:

< compilation
defaultLanguage="c#"
debug="false"
/>

2. 客戶端設定超時

在 WebService 的客戶端代理程式(用 wsdl.exe 生成)裡設定 Request 超時時間, 單位是毫秒:
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest wr = (HttpWebRequest)base.GetWebRequest( uri );
wr.Timeout = 30*1000;
return wr;
}