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

報錯,「超時時間已到。在操作完成之前超時時間已過或服務器未響應」

初步分析原因爲對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:表示指示客戶端重定向是否是完全限定的(採用 'http://server/path ' 格式,這是某些移動控件所必需的),或者指示是否代之以將相對重定向發送到客戶端。如果爲 True,則所有不是完全限定的重定向都將自動轉換爲完全限定的格式。false 是默認選項。

     minFreeThreads:表示指定允許執行新請求的自由線程的最小數目。ASP.NET 爲要求附加線程來完成其處理的請求而使指定數目的線程保持自由狀態。默認值爲 8。

    minLocalRequestFreeThreads:表示ASP.NET 保持的允許執行新本地請求的自由線程的最小數目。該線程數目是爲從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免 了可能的因遞歸重新進入 Web 服務器而導致的死鎖。

    appRequestQueueLimit:表示ASP.NET 將爲應用程序排隊的請求的最大數目。當沒有足夠的自由線程來處理請求時,將對請求進行排隊。當隊列超出了該設置中指定的限制時,將通過「503 - 服務器太忙」錯誤信息拒絕傳入的請求。

    enableVersionHeader:表示指定 ASP.NET 是否應輸出版本標頭。Microsoft Visual Studio 2005 使用該屬性來確定當前使用的 ASP.NET 版本。對於生產環境,該屬性不是必需的,可以禁用。

 

 

 

 

在項目中,做蓄水量線性插值功能模塊過程中,每次update蓄水量字段到數據庫中時,每隔幾十條就會出現「超時時間已到。在操作完成之前超時時間已過或服務器未響應。 」 的異常,一開始以爲是數據記錄太多(一共170000多條),於是考慮數據分段獲取-插值-更新的方式,每次只執行100條記錄,仍然會報該異常。因此排 除該情況。由於我連接另外一臺裝有SqlServer數據庫的服務器時,不會出現該問題,而在我本機進行數據庫測試時,就會出現該問題。因此,我懷疑是我 本機的sqlserver數據庫服務段設置不正確。經檢查發現,我的Sql Server的網絡使用工具中的TCP/IP的屬性設置爲0,而查詢服務器sql server該端口值爲1433,因此我將該值修改爲1433,再執行程序測試,則順利解決超時問題。

 

轉載於:https://my.oschina.net/ind/blog/280807