![](/img/trans.png)
[英]ASP - the timeout period elapsed prior to obtaining a connection from the pool
[英]The timeout period elapsed prior to obtaining a connection from the pool
我收到了錯誤:
錯誤連接:超時已過期。 從池中獲取連接之前經過的超時時間。 這可能是因為所有池連接都在使用中並且達到了最大池大小。
每當我在瀏覽器中等待響應很長時間后停止IIS時,它就會出現。 如果我試圖等待,那么我得到的錯誤是An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll
但我得到的錯誤是寫得很舊。 我只寫了一個沒有任何異常的新命令。 [我認為第一次運行錯誤首先出現錯誤,所以所有新錯誤都不能給出異常]。
所以我需要做些什么才能解決這個問題。
該錯誤表示連接池沒有連接。 通常的原因是在使用后忘記關閉連接,例如:
var con = new MySqlConnection("Server=YourDB;Database=YourDb;...");
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";
此代碼忘記關閉連接,因此池連接較少。 你可以通過添加:
con.Close();
在末尾。 但是,如果查詢引發異常,則將跳過Close
,並且您仍然關閉1連接。
更好的方法是using
語句:
using (var con = new MySqlConnection("Server=YourDB;Database=YourDb;..."))
{
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";
}
您可以通過在連接結束時添加max pool size
輕松解決此問題,例如:
Server=YourDB;Database=YourDbUid=YourUser;Pwd=YourPwd;max pool size=1;
這使您的池大小為1,如果您忘記釋放一個連接,則會立即觸發錯誤情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.