Я пишу приложение ASP.NET. На моем уровне данных соединение sql открывается и закрывается до и после запроса. SqlConnection сохраняется как частное поле одного класса. Каждый вызов базы данных в классе использует одну и ту же структуру:
Код: Выделить всё
conn.Open();
try
{
// database querying here
}
finally
{
conn.Close();
}
Тем не менее, в очень редких случаях я получаю исключение «Соединение не было закрыто». Текущее состояние соединения открыто». Воспроизвести проблему невозможно, поскольку она очень редко возникает из разных частей кода. В моем приложении задействованы некоторые потоки, но новые потоки также создают новые классы уровня данных и, следовательно, новые объекты соединения.
Я не понимаю, как можно сохранять соединение вокруг откройте, используя приведенный выше код. Разве соединение не должно всегда закрываться после открытия, что делает невозможным возникновение вышеуказанного исключения?
Подробнее здесь:
https://stackoverflow.com/questions/190 ... te-is-open