Поймать все обработчик исключений в global.cs - PullRequest
0 голосов
/ 10 августа 2010

Что я хотел бы сделать, так это перехватить любое исключение, которое не было обработано в веб-приложении, а затем отправить пользователя на экран с сообщением, похожим на

«Извините, что произошел сбой»

И в то же время отправить исключение в наши системы продажи билетов.

Я предполагаю, что мне нужно поместить его в global.cs где-то, просто не знаю где?

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Пользовательскую страницу ошибки можно настроить в файле web.config следующим образом:

<configuration>
  <system.web>
    <customErrors defaultRedirect="GenericError.htm"
                  mode="RemoteOnly">
    </customErrors>
  </system.web>
</configuration>

Также целесообразно регистрировать эти исключения.Есть несколько популярных систем регистрации, которые могут сделать это для вас.Два из них, ELMAH и CuttingEdge.Logging , имеют стандартные средства интеграции для ASP.NET, что позволяет не писать ни одной строки кода.Например, используя CuttingEdge.Logging, вы можете настроить свой сайт на автоматическую регистрацию ошибок в журнале событий Windows следующим образом:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="logging" 
        type="CuttingEdge.Logging.LoggingSection, CuttingEdge.Logging" />
  </configSections>
  <logging defaultProvider="WindowsEventLogger">
    <providers>
      <add name="WindowsEventLogger"
type="CuttingEdge.Logging.WindowsEventLogLoggingProvider, CuttingEdge.Logging"
        source="MyWebApplication"
        logName="MyWebApplication" />
    </providers>
  </logging>
  <system.web>
    <httpModules>
      <add name="ExceptionLogger"
type="CuttingEdge.Logging.Web.AspNetExceptionLoggingModule, CuttingEdge.Logging"/>
    </httpModules>
  </system.web>
</configuration>

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

Удачи.

3 голосов
/ 10 августа 2010

Вам необходимо событие Application_Error в Global.cs

protected void Application_Error(object sender, EventArgs e)
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...