在我們編寫程序的時候,有時候要進行復雜的查詢時,就會出現執行sql時間過長,引起頁面執行不了並提示執行腳本超時,這就是我們遇到超時異常。
超時異常分兩種情況:一種,是連接超時;一種,是執行超時。
前者,通過SqlConnection.ConnectionTimeOut進行設置。
后者,通過SqlCommand.CommandTimeOut進行設置。
SqlConnection.ConnectionTimeout
獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。
等待連接打開的時間(以秒為單位)。默認值為 15 秒。
SqlCommand.CommandTimeout
獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間。
等待命令執行的時間(以秒為單位)。默認為 30 秒。
這個是網上找到的方法: conn.open(); SqlCommand sqlcmd=new SqlCommand(); sqlcmd.CommandTimeout=180; //sqlcmd的超時為3分鍾 可根據需要設置,如果過長,也可以設置為0,當此屬性設置為0時表示不限制時間。此屬性值應該慎用。還需要在Web.config配置文件中設置http請求運行時限間 <system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web> 這里設置的為720秒,前面的屬性maxRequestLength一般用於用戶上傳文件限制大小!默認一般為4096KB(4 MB)。 |
我在項目中用到的另一種方法: 解決辦法: 1、引入靜態對象記錄當前的操作狀態,使用Ajax實時顯示任務完成進度,由於使用了靜態對象,即使使用者暫時離開頁面再次進入時進度還是在; 2、引入后台線程,由線程操作靜態對象,可以很好的解決超時的問題。 |
原文網址:http://www.cnblogs.com/qanholas/archive/2013/02/26/2933625.html