ここに見られるように、私はロジックでレガシーコードを持っている:と、InvalidOperationException:SqlDataReader.Closeで内部接続の致命的なエラー()
:using (SqlDataReader drColor = ColorDal.GetColors())
{
if (drColor.HasRows)
{
string colorCacheKey = string.Empty;
//_log.Debug("Total Color Count loaded from database: " + dsColor.Tables.Count.ToString());
// Retrieve each colorfamily present in the dataset.
while (drColor.Read())
{
......
}
}
drColor.Close(); // This is line # in the exception.
}
断続的に私は私のASP.NET MVCアプリで次の例外を取得しています
[例外InvalidOperationException:内部接続致命的なエラー。]
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、 SqlCommandオブジェクトcmdHandler、SqlDataReaderのデータストリーム、 BulkCopySimpleResultSらbulkCopyHandler、TdsParserStateObject stateObj)6355814
System.Data.SqlClient.SqlDataReader.CloseInternal(ブールcloseReader) System.Data.SqlClient.SqlDataReader.Close()293
でしたクロージングSqlDataReader
の内部にusing{}
が原因ですか?
ありがとうございました。
ブロックの終了を使用している場合、それは近くに呼び出す必要がありますし、それはおそらく原因ではありませんが、コードはとにかく不必要です。 – Tejs
Tejsが正しい - 「使用する」が正しい方法です。 .Close()は必要ではありませんが、あなたの問題の原因ではありません。私は、読書中に何かが起こっていると思っています。おそらくそれを閉じる別のスレッドでしょうか? – n8wrl
私は、ブロックを使用して終了すると、接続を閉じて処分することを知っていますが、スタックトレースにはデータエリアが閉じられている行番号が記載されています。 – parsh