Timeout時間已到.在操做完成以前超時時間已過或服務器未響應web
問題sql
在使用asp.net開發的應用程序查詢數據的時候,遇到頁面請求時間過長且返回"Timeout時間已到。在操做完成之間超時時間已過或服務器未響應"的狀況數據庫
分析服務器
形成這一問題的緣由大概有如下幾點:
1.Asp.net請求超時
2.Webservice請求超時
3.IIS請求超時
4.數據庫鏈接超時 asp.net
憑經驗判斷,應當是數據庫鏈接超時形成,根據在網上找到的解決方法,進行了如下嘗試網站
鏈接字符串中添加Connect Timeoutui
在數據庫鏈接字符串後面添加Connect Timeout=500(鏈接超時時間設爲500秒)
spa
SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")
運行查詢後,不到30秒,仍然返回Timeout超時,問題未解決.net
設置Command對象屬性CommandTimeout代理
SqlCommand cmd = new SqlCommand(); cmd.CommandTimeout = 180;
運行,能夠解決Command的執行超時問題,這裏設置的時間的180秒,可根據須要設置,若是過長,也可設置爲0,設置爲0時表示不限制時間,此屬性值需慎用。還須要在Web.config配置文件中設置http請求運行時限間
<system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web>
這裏設置的爲720秒,前面的屬性maxRequestLength通常用於用戶上傳文件限制大小!默認通常爲4096 KB (4 MB)。
設置 DataAdapter對象屬性SelectCommand
SqlDataAdapter da = new SqlDataAdapter(strsqll, sqlconstr); da.SelectCommand.CommandTimeout = 180;
運行,解決超時問題。該條設置對DataAdapter返回多條記錄查詢超時問題的解決效果立竿見影(Repeater綁定數據多適用次狀況)。設置時間爲180秒,根據須要可更改。
Asp.net中關於超時的設置
在web.config 裏<system.web>節點添加如下代碼:
<system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web>
MSDN解釋:
httpRuntime是配置asp.Net http運行時設置,以肯定如何處理對asp.Net應用程序的請求。
executionTimeout:表示容許執行請求的最大時間限制,單位爲秒 maxRequestLength:指示 ASP.Net 支持的最大文件上載大小。該限制可用於防止因用戶將大量文件傳遞到該服務器而致使的拒絕服務攻擊。指定的大小以 KB 爲單位。默認值爲 4096 KB (4 MB)。
WebService請求超時時間的設置:
擴大代理類的超時限制,默認是90秒 ,即在調用方法前指定超時時間。
YourWebService yws = new YourWebService(); yws.Timeout = 1200000; //20分鐘,單位是毫秒
若是將 Timeout 屬性設置爲 Timeout.Infinite,則指示該請求無超時。即便 XML Web services 客戶端能夠將 Timeout 屬性設置爲無超時,Web 服務器仍能夠在服務器端使請求超時。
IIS中請求超時設置。
IIS-網站-屬性 鏈接超時時間 1200秒