Использование оператора Соединение не закрытое исключение - PullRequest
1 голос
/ 02 мая 2019

Как остановить функции класса ASP.NET, C #, выбрасывающие исключение Соединение не закрыто до того, как оператор using создаст экземпляр соединения?Это происходит при отладке в сообществе Visual Studio 2019.

1. Снятие отметки «Просто мой код» в настройках отладки 2. Добавление «Наконец-то {conn.Close ()}» во вложенное выражение с помощью оператора 3. Удалениеtry / catch из using оператор 4. Проверка всех методов и функций, вызываемых до того, как функция выдает ошибку для искаженного синтаксиса или кода

    /// <summary>
    /// Gets all colleges currently in db
    /// </summary>
    /// <returns>College object list</returns>
public List<College> getAllColleges()
{
    List<College> allColleges = new List<College>();
    using (SqlConnection conn = new SqlConnection(DbHelper.ConnectionString))
    { 
        using (SqlCommand cmd = new SqlCommand("getAllColleges", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            conn.Open();
            try
            {
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    //once the college code is known, get college specific information
                    College c = new College();
                    c = getCollegeByColCode(dr["col"].ToString());
                    allColleges.Add(c);
                }

            }
            catch (Exception e)
            { throw e; }

        }

    }

    //order list by college name
    allColleges.OrderBy(o => o.colFullName).ToList();
    return allColleges;
}

ОШИБКА ПОСЛЕ ОТКРЫТОГО СПИСКА allColleges СПИСОК, НО ПЕРЕД ИСПОЛЬЗОВАНИЕМ СОСТОЯНИЯ

Соединение не было закрыто.Текущее состояние соединения открыто.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: Соединение не было закрыто.Текущее состояние соединения открыто.

Ошибка источника:

Строка 115: {Строка 116:
Строка 117: список колледжей = новый список ();Строка 118: использование (SqlConnection conn = new SqlConnection (DbHelper.ConnectionString)) Строка 119: {

Исходный файл: C: _dev \ SNQProject \ SNQLibrary \ SNQLibrary \ Classes \ College.cs Строка: 117

Трассировка стека:

[InvalidOperationException: Соединение не было закрыто.Текущее состояние соединения открыто.] SNQLibrary.Classes.College.getAllColleges () в C: _dev \ SNQProject \ SNQLibrary \ SNQLibrary \ Classes \ College.cs: 117 Admin_SNQAdmin.buildCollegeSelect (String colCode) в c: _dev \ SNQ \ Admin\ SNQAdmin.master.cs: 191 Admin_Default.finalizeLogIn () в c: _dev \ SNQ \ Admin \ Default.aspx.cs: 135 Admin_Default.btnLogin_Click (Отправитель объекта, EventArgs e) в c: _dev \ SNQ \ Admin \ Default.aspx.cs: 98 System.Web.UI.WebControls.Button.OnClick (EventArgs e) +11758848 System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) +150 System.Web.UI.Page.ProcessRequestMain (BooleanincludeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 5028

1 Ответ

0 голосов
/ 02 мая 2019

Эта ошибка может указывать на то, что соединение в другом месте не было закрыто.

Пожалуйста, не открывайте новое соединение или не закрывайте все соединения после завершения выполнения.

...