Я пишу приложение ASP.NET. В моем datalayer соединение sql открывается и закрывается до и после запроса. SqlConnection хранится как частное поле одного класса. Каждый вызов базы данных в классе использует ту же структуру:
conn.Open();
try
{
// database querying here
}
finally
{
conn.Close();
}
Тем не менее, в очень редких случаях я получаю исключение. Связь не была закрыта. Текущее состояние соединения открыто. Невозможно воспроизвести проблему, поскольку она возникает очень редко из разных частей кода. В моем приложении есть несколько потоков, но новые потоки также создают новые классы слоев данных и, следовательно, новые объекты подключения.
Я не понимаю, как можно подключить соединение, открытое с помощью приведенного выше кода. Не следует ли закрывать соединение после открытия, исключая возможность исключения из вышеперечисленного?