'ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения открыто

Довольно большое веб-приложение, написанное на C #, выдает 2 ошибки:

'ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения открыто. ' и 'Недопустимая попытка вызвать Read, когда читатель закрыт.'

Эти ошибки были спорадическими - страницы обычно загружались нормально в 95% случаев, но в последнее время они стали повсеместными, они происходят постоянно и в основном наносят ущерб функциональности приложения.

Веб-приложение сильно зависит от базы данных MS SQL, и ошибки, по-видимому, не ограничиваются одной страницей, а почти всеми страницами, которые подключаются к базе данных.

Запросы выполняются так:

Database.Open(); // Custom class that has our connection string hard coded.

string query = "SELECT * FROM table"; // (dummy query)
SqlCommand command = new SqlCommand(query, Database.Conn);

SqlDataReader reader = null;

try {
    reader = command.ExecuteReader(CommandBehaviour.CloseConnection);

    if (reader.HasRows) {

        while (reader.Read()) {
            // Do something with the data.
        }
   }
    reader.Close();
}
catch (Exception e) {
    throw new Exception(e.Message);
}
finally {
    if (reader != null) {
        reader.Close();
    }
}

Я исследовал эти ошибки в Интернете и увидел несколько потенциальных решений, которые я пытался безрезультатно:

Помещение различных частей кода в блок using (). Указание CommandBehaviour.CloseConnection для читателя. Проверка того, что MARS включен. Обеспечение того, чтобы каждый раз создавался новый объект подключения.

Я потратил целые годы на поиски решений этой проблемы, не говоря уже о том, что долго пытался заставить ее работать, и я почти на грани того, чтобы вырвать мои волосы прямо сейчас!

Пожалуйста помоги!

РЕДАКТИРОВАТЬ - Исправлена проблема, см. Раздел комментариев.

Ответы на вопрос(2)

Ваш ответ на вопрос