Передача исключений на экран ошибок в ASP.net/C#

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

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

Решение

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

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

И затем используя ЭЛЬМА отправить электронное письмо и/или зарегистрировать ошибку.

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

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

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

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

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

Server.GetLastError();

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

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

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

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

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

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

Если вам нужны подробности об ошибке, воспользуйтесь средством просмотра событий Windows или ЭЛЬМА или использовать какой-либо механизм регистрации.

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