ASP.NET логика / объединение в пул соединений и передача ошибок

StackOverflow https://stackoverflow.com/questions/289472

  •  08-07-2019
  •  | 
  •  

Вопрос

Я только что загрузил свой первый ASP.NET (как часть моего изучения vb.net ) и попал в ужасную переделку с пулом подключений (забавные вещи случаются, когда на вашем веб-сайте более 1 пользователя) теперь все отсортировано за счет лучшего использования инструкций try catch (ну, идея была в том, чтобы научиться), но мне было интересно, является ли это лучшим / окончательным методом, теперь, если попытка завершается неудачей, большая часть деталей на странице не размещается / обновляется, поэтому, если вы выполняете какую-то работу с базой данных и попытка завершается неудачей, перезагрузите страницу...перенаправьте на self и надейтесь , что это сработает в следующий раз ...или просто сообщить пользователю , что произошла ошибка , и он должен попробовать еще раз ?

Спасибо

Это было полезно?

Решение

Вы определенно должны использовать 'using' инструкции для всех объектов , которые реализуют IDisposable (например, соединения и читатели).Оператор 'using' преобразуется в блок try-finally под прикрытием и гарантирует, что Dispose() вызывается, даже если возникает ошибка.

Вот пример фрагмента кода:

using (SqlConnection conn = new SqlConnection(this.connectionString))
{
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "LoadFromRepository";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ID", fileID);

        conn.Open();
        using (SqlDataReader rdr =
                   cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (rdr.Read())
            {
                // do something with read data
            }
        }
    }
}

Другие советы

Если возникает непредвиденная ошибка, перенаправьте пользователя на страницу с ошибкой, поскольку это, вероятно, произойдет и в следующий раз.

Вы изучали инструкции "Using" для подключений к БД и считывателей?

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

Сообщите пользователю и, при необходимости, ссылку, чтобы попробовать это еще раз.

Возможно, вы даже захотите проанализировать свое исключение, чтобы посмотреть, поможет ли еще одна попытка.Некоторые исключения на самом деле являются ошибками, и еще одна попытка не поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top