Timeout時間已到.在操作完成之前超時時間已過或服務器未響應
問題
在使用asp.net開發的應用程序查詢數據的時候,遇到頁面請求時間過長且返回"Timeout時間已到。在操作完成之間超時時間已過或服務器未響應"的情況
分析
造成這一問題的原因大概有以下幾點:
1.Asp.net請求超時
2.Webservice請求超時
3.IIS請求超時
4.數據庫連接超時
憑經驗判斷,應當是數據庫連接超時造成,根據在網上找到的解決方法,進行了以下嘗試
連接字符串中添加Connect Timeout
在數據庫連接字符串后面添加Connect Timeout=500(連接超時時間設為500秒)
SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")
運行查詢后,不到30秒,仍然返回Timeout超時,問題未解決
設置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秒
linq怎么設置請求數據庫的響應時間超過指定時間還沒有響應就提示錯誤
DataContext.CommandTimeout=180
http://msdn.microsoft.com/zh-cn/library/system.data.linq.datacontext.commandtimeout.aspx