2013-07-28 3 views
1

В моем Web.config у меня есть.Как заменить «Ошибка. Ошибка при обработке вашего запроса».

<customErrors mode="On" defaultRedirect="~/Errors/Unknown"> 
    <error statusCode="403" redirect="~/Errors/Forbidden"></error> 
    <error statusCode="404" redirect="~/Errors/NotFound"></error> 
</customErrors> 

Он работает нормально, если я пытаюсь открыть страницу, которая не существует. (Он перенаправляет на мою страницу пользовательских ошибок: ErrorsController.NotFound). При возникновении необработанного исключения (в этом случае в LINQ Signle (...)). Он не переходит в ~/Ошибки/Неизвестно, но отображает сообщение по умолчанию:

Ошибка. Во время обработки Вашего запроса произошла ошибка.

Как заменить его на ErrorsController.Unknown?

+0

http://stackoverflow.com/questions/16312588/in-asp-net-mvc-4-what-is-the-best-show-unhandled-exceptions-in-my-view Я считаю, что этот вопрос поможет ответить на ваши вопросы. – newtonrd

+0

Вы также можете найти это полезным: http://stackoverflow.com/a/13905859/1373170 –

+0

На самом деле это помогло: http://stackoverflow.com/questions/1171035/asp-net-mvc-custom-error-handling- приложения ошибок глобального asax – gisek

ответ

0

Благодаря this question Я понял, как это сделать. Код ниже почти такой же, как и принятый ответ. Модификация также не обрабатывает HttpExceptions.

шаги, чтобы сделать его работу:

  1. CustomErrors элемент в web.config теперь будет игнорироваться
  2. Вставить метод ниже вашего Global.axax.

    protected void Application_Error(object sender, EventArgs e) 
    { 
        Exception exception = Server.GetLastError(); 
        Response.Clear(); 
    
        var httpException = exception as HttpException; 
    
        if (httpException != null) 
        { 
         string action; 
    
         switch (httpException.GetHttpCode()) 
         { 
          case 404: 
           // page not found 
           action = "NotFound"; 
           break; 
          case 403: 
           // forbidden 
           action = "Forbidden"; 
           break; 
          case 500: 
           // server error 
           action = "HttpError500"; 
           break; 
          default: 
           action = "Unknown"; 
           break; 
         } 
    
         // clear error on server 
         Server.ClearError(); 
    
         Response.Redirect(String.Format("~/Errors/{0}", action)); 
        }else 
        { 
         // this is my modification, which handles any type of an exception. 
         Response.Redirect(String.Format("~/Errors/Unknown")); 
        } 
    } 
    
Смежные вопросы