Кастомная обработка ошибок Asp.Net - PullRequest
3 голосов
/ 18 марта 2010

В моем веб-приложении я настроил свой файл web.config для включения ошибок клиентов, так что вот оно:

<customErrors mode="On" defaultRedirect="Error.aspx">
    <error statusCode="403" redirect="Error.aspx" />
    <error statusCode="404" redirect="Error.aspx" />
  </customErrors>

Для объяснения свойств я только зафиксировал ошибку 403 и 404 (и, очевидно, defaultRedirect). Но я хотел бы получить более подробную информацию об ошибке на странице: Error.aspx как-то; но не создавая каждую страницу для каждого вида ошибок. Есть ли способ включить определенный код на мою страницу с ошибкой (Error.aspx), чтобы получить подробную информацию о том, что вызвало эту ошибку?

PD. Я использую C #.

Ответы [ 4 ]

2 голосов
/ 18 марта 2010

Просто, чтобы добавить к разговору и применить то, что уже предложили другие, вот как вы можете использовать то, что Ман предложил показать ошибку на странице Error.aspx:

protected void Application_Error(object sender, EventArgs e)
        {
            //Get last error
            Exception ex = Server.GetLastError();
            ex = ex.GetBaseException();

            //display error to user
            Context.AddError(ex);
            Server.Transfer("Error.aspx", true);

        }

На странице Error.aspx поместите этот код внутри тега Body:

<p>
    <i><%= Context.Error.InnerException.Message.ToString() %></i>
</p>
0 голосов
/ 18 марта 2010

В большинстве случаев вы можете использовать Server.GetLastError () для получения ошибки, которая вызвала перенаправление.

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

0 голосов
/ 18 марта 2010

Вы можете перехватывать и регистрировать ошибки, обрабатывая событие Application_Error в Global.asax.

protected void Application_OnError(object sender, EventArgs e)
{
    // Get the last error
    Exception exception = Server.GetLastError();

    // Do something with the error here
    ErrorLogger.Log(exception);
}

Для регистрации ошибок вы можете использовать что-то вроде ELMAH или Log4net .

0 голосов
/ 18 марта 2010

Кстати, вы пытались использовать ELMAH . Проще всего обеспечить отличное ведение журнала и отчет об ошибках.

РЕДАКТИРОВАТЬ: - Я знаю, это не имеет ничего общего с Error.aspx. Я просто предлагал хороший способ регистрации и сообщения об исключениях.

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