2008-11-14 11 views
0

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

Благодаря

ответ

0

Вы должны использовать операторы '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 
      } 
     } 
    } 
} 
0

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

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

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

0

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

Вы изучали инструкции «Использование» для соединений DB и считывателей?