後,我爲了簡化它MySQL連接池泄露ThreadAbortedException
我遇到一個奇怪的問題,從來沒有在此代碼之前發生的事情(2年完美運行)更新的代碼。
我在多個IIS上運行MVC應用程序,並通過C#代碼使用MySQL。
查詢表X接收來自同一模式中不同表的響應。
這個問題偶爾出現在某些IIS上(一次1-4天),並由3個iisreset解決。
這裏是我正在使用的代碼(更新):
using (var conn = new MySqlConnection(connectionString))
{
var command = conn.CreateCommand();
command.CommandText = sql;
IDataReader reader;
try
{
reader = command.ExecuteReader();
}
catch (Exception ex)
{
throw new MoranbernateQueryException(sql, ex);
}
using (reader)
{
while (reader.Read())
{
Console.WriteLine(sql, GetTableFromReader(reader));
}
}
}
}
private static string GetTableFromReader(IDataReader reader)
{
var schema = reader.GetSchemaTable();
var rows = schema?.Rows;
if (rows != null && schema.Columns.Count > 11)
{
return rows[0][10].ToString();
}
}
此代碼的結果是從讀取器架構中的SQL查詢表A,但表(和數據)乙。兩個表都駐留在同一個DB和Schema中。
有沒有其他人遇到這種類型的問題?我想聽聽任何有關調查的理論或建議。
命令的MySqlConnection的實例後,你如何管理編譯這段代碼? – Steve
@GSerg - 讀取器將在使用塊完成後處理。但值得一看的是這個方法的聲明,以及它是如何被調用的。 – Paddy
我和@Tom一起工作,我想更新這個問題,我們發現由於某些特性(已刪除)我們有一個很長的進程運行,但是iis拋出了'ThreadAbortedException',因此在從'MySql'讀取數據時沒有嘗試捕獲,問題在於我們的連接池沒有同步,並且連接泄漏。 現在我們試圖瞭解這是MySql驅動程序問題還是其他問題。有什麼想法嗎 ? – guyl