來源:http://www.study-code.com/dotnet/aspnet/67495.htm
解決辦法
1.在代碼裡面,把未關閉的串連關閉
2.擴大共用池,方法如下:
解決方案可以是修改串連池的串連生存期,因為預設值是60秒,即串連從應用程式被釋放後可以在池中儲存的時間。
具體操作步驟如下:
如果是ODBC的話,則可以在ODBC Data Source Administrator中手動更改,該程式位於“Start”菜單中的“Programs”->"Adminstrative Tools"(中文名:管理工具)下,或從"Control Panel"(中文名:控制台)中開啟“ODBC Data Source Administrator”(ODBC資料來源管理器),再選擇“Connection Pooling”(串連池)選項卡,雙擊驅動程式中的“SQL Server”,選擇“Pool Connetions to this drive”(使用池串連該驅動程式),把下面的時間60秒改的大一點,例如120。
如果是SqlConnection的共用串連,則為ConnectionString屬性Connection Lifetime數值名稱指定一個值,該值預設情況下是0,表示串連永遠不會從池中被自動移走。如果指定一個不同的值,那麼一旦串連被返回到池中,該值將和串連的建立時間及目前時間進行比較。如果生存期超過了Connection Lifetime的值,那麼串連將從池中被移走。
問題的原因是與資料庫的串連沒有顯示關閉,而等系統自動回收是要時間的.解決的方法是改變串連池的大小.在連接字串的後面加上以下代碼:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000
packet size參數取512到32767中的任一整數值
方法有以下兩種:
1,在web.config中加上以下語句:
<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)。
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 版本。對於生產環境,該屬性不是必需的,可以禁用。
2,解決方案很簡單,在代碼中找到命令對象比如SqlCommand對象,給CommandTimeOut屬性賦一個比較大的值。比如60秒,SqlCommand預設逾時設定是30秒。也可以將sqlcommand的timeout屬性設為0.
備忘:
值 0 指示無限制,在 CommandTimeout 中應避免值 0,否則會無限期地等待執行命令。
[C#]
public void CreateMySqlCommand()
{
SqlCommand myCommand = new SqlCommand();
myCommand.CommandTimeout = 15;
myCommand.CommandType = CommandType.Text;
}
see as:http://msdn.microsoft.com/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlcommandclasscommandtimeouttopic.asp?frame=true
SqlDataAdapter da= new SqlDataAdapter();
da.SelectCommand.CommandTimeout = 60;