Timeout 時間已到。在操作完成之前超時時間已過或服務器未響應。


近來遇到這樣一個錯誤:Timeout 時間已到。在操作完成之前超時時間已過或服務器未響應。錯誤截圖如下:

錯誤原因分析:
產生錯誤時我執行的操作需要的執行時間比較長。我測試了一下,那個操作用到的存儲過程,需要處理的數據有13多萬條,需要執行時間大概是1分40秒。下圖是當時執行時的截圖。

而客戶端與數據庫連接時間以及命令的執行時間都是有限的,當這兩個時間其中一個小於操作時間,錯誤就會產生。

解決方法:
第一步:修改Web.config配置文件。在數據庫連接字符串中加上連接時間Connect Timeout,根據實際情況定時間。

[html]  view plain copy
  1. <!--連接數據庫-->  
  2. <connectionStrings>  
  3.      <add name="strConnDB" connectionString=" Data Source=192.168.*.*;Initial Catalog=DatabaseName;Persist Security Info=True;User id=sa;Password=password;pooling=true;max pool size=800;min pool size=300;<span style="color:#FF0000;">Connect Timeout=500</span>;"/>  
  4. </connectionStrings>  


第二步:修改command對象的CommandTimeout屬性。 

[csharp]  view plain copy
  1. SqlCommand cmd = new SqlCommand();  
  2. cmd.CommandTimeout = 180;  

這里設置的時間是180秒,即三分鍾!可根據需要設置,如果過長,也可以設置為0,當此屬性設置為0時表示不限制時間。此屬性值應該慎用。

到此為止,問題完美解決。

補充:
SqlCommand.CommandTimeOut:獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間。
SqlConnection.ConnectionTimeout:獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM