Передача исключений на экран ошибок в ASP.net/C# - PullRequest
3 голосов
/ 24 сентября 2008

Исходя из фона рабочего стола, я не совсем уверен, как передать перехваченные исключения на страницу ошибок, чтобы пользователи не увидели стандартный экран исключений.

Мой общий вопрос: как передать исключение со страницы X на страницу ошибок в ASP.net?

Ответы [ 7 ]

6 голосов
/ 24 сентября 2008

Я предлагаю использовать раздел customErrors в web.config:

   <customErrors mode="RemoteOnly" defaultRedirect="/error.html">
      <error statusCode="403" redirect="/accessdenied.html" />
      <error statusCode="404" redirect="/pagenotfound.html" />
   </customErrors>

А затем с помощью ELMAH отправьте электронное письмо и / или зарегистрируйте ошибку.

2 голосов
/ 24 сентября 2008

Вы также можете получить исключение из

Server.GetLastError();
2 голосов
/ 24 сентября 2008

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

2 голосов
/ 24 сентября 2008

Шаблон, который я использую, регистрирует ошибку в блоке try / catch (используя log4net), а затем делает response.redirect на простую страницу ошибок. Это предполагает, что вам не нужно показывать какие-либо подробности ошибки.

Если вам нужны подробности исключений на отдельной странице, вы можете посмотреть на Server.GetLastError. Я использую это в global.asax (в событии Application_Error) для регистрации необработанных исключений и перенаправления на страницу ошибки.

1 голос
/ 24 сентября 2008

Мы фиксируем исключение в файле Global.asax, сохраняем его в сеансе, затем пользователь перенаправляется на страницу ошибок, где мы получаем исключение для нашей переменной сеанса и отображаем информацию сообщения пользователю.

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }

Мы регистрируем сообщение об ошибке до его отображения пользователем.

1 голос
/ 24 сентября 2008

Используйте пользовательские страницы ошибок в asp.net, вы можете найти их в разделе customError в web.config

0 голосов
/ 24 сентября 2008

Я думаю, вы можете использовать обработчик global.asax - Application_Exception , чтобы перехватить исключение и затем сохранить его для отображения на странице ошибки.

Но на самом деле ваша страница ошибок не должна содержать код, который может вызвать еще одну ошибку. Это должна быть простая страница «К сожалению! Что-то пошло не так».

Если вам нужны подробности об ошибке, используйте средство просмотра событий Windows или ELMAH или используйте какой-либо механизм ведения журнала.

...