C# 連線串設定超時時間
超時時間已到。在操作完成之前超時時間已過或伺服器未響應”
初步分析原因為對MSSQL操作時連線超時,知道這事,以前沒留意,大概是在配置檔案中設定連線時限,在網上找了下解決方法,大多說在資料庫連線字串裡解決 SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;")改為: SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=500")似乎沒效果。依然執行30秒即報超時!
突然感覺似乎應該可以在連線資料庫程式碼中指明,式了下con的屬性,有個ConnectionTimeout,
SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=;");
con.ConnectionTimeout = 180;//報錯,屬性ConnectionTimeout 為只讀!嘗試失敗,再接著看command物件屬性,發現其也有類似屬性!CommandTimeout設定一下: SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 180;再執行,即解決,這裡設定的時間的180秒,即三分鐘!可根據需要設定,如果過長,也可以設定為0,當此屬性設定為0時表示不限制時間。此屬性值應該慎用。還需要在Web.config配置檔案中設定http請求執行時限間 <system.web>
<httpRuntime maxRequestLength="102400" executionTimeout="720" />
</system.web>
這裡設定的為720秒,前面的屬性maxRequestLength一般用於使用者上傳檔案限制大小!預設一般為4096 KB (4 MB)。
看一下來自MSDN解釋:
httpRuntime是配置asp.net http執行時設定,以確定如何處理對asp.net應用程式的請求。
executionTimeout:表示允許執行請求的最大時間限制,單位為秒
maxRequestLength:指示 ASP.NET 支援的最大檔案上載大小。該限制可用於防止因使用者將大量檔案傳遞到該伺服器而導致的拒絕服務攻擊。指定的大小以 KB 為單位。預設值為 4096 KB (4 MB)。
useFullyQualifiedRedirectUrl:表示指示客戶端重定向是否是完全限定的(採用 "
minFreeThreads:表示指定允許執行新請求的自由執行緒的最小數目。ASP.NET 為要求附加執行緒來完成其處理的請求而使指定數目的執行緒保持自由狀態。預設值為 8。
minLocalRequestFreeThreads:表示ASP.NET 保持的允許執行新本地請求的自由執行緒的最小數目。該執行緒數目是為從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免了可能的因遞迴重新進入 Web 伺服器而導致的死鎖。
appRequestQueueLimit:表示ASP.NET 將為應用程式排隊的請求的最大數目。當沒有足夠的自由執行緒來處理請求時,將對請求進行排隊。當佇列超出了該設定中指定的限制時,將通過“503 - 伺服器太忙”錯誤資訊拒絕傳入的請求。
enableVersionHeader:表示指定 ASP.NET 是否應輸出版本標頭。Microsoft Visual Studio 2005 使用該屬性來確定當前使用的 ASP.NET 版本。對於生產環境,該屬性不是必需的,可以禁用。