MVC 3, defaultRedirect и модель HandleErrorInfo - PullRequest
4 голосов
/ 04 мая 2011

Я пытаюсь перенаправить на пользовательскую страницу ошибок (через определенный контроллер), чтобы обработать коды ошибок HTTP, которые не были явно обработаны.

Чтобы упростить это, у меня есть следующая конфигурация

<customErrors mode="On" defaultRedirect="errors" />

И для моего контроллера:

public class ErrorsController : Controller
{
    public ActionResult Index ()
    {
        return View ();
    }
}

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

Моя проблема связана с получением информации об ошибке ... У меня нет экземпляра HandleErrorInfo, который я могу найти, и Service.GetLastError () ничего не возвращает ...

Кто-нибудь знает, каксоздать или получить объект HandleErrorInfo?- Я бы предпочел использовать это и заполнить его так, чтобы он соответствовал остальной части обработки ошибок.

Спасибо,Кирон

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Добавьте атрибут HandleError к своему контроллеру (или определенным действиям):

[HandleError]
public class HomeController

Затем используйте это в своем web.config для управления поведением перенаправления на основе различных ошибок:

<system.web>
  <customErrors mode="On" defaultRedirect="Error.aspx">
    <error statusCode="403" redirect="NoAccess.htm"/>
    <error statusCode="404" redirect="FileNotFound.htm"/>
  </customErrors>
</system.web>

Я уверен, что вы можете настроить перенаправление, чтобы использовать настраиваемый / контроллер / действие, и это должно опубликовать HandleErrorInfo для вас, надеюсь, но никогда не пробовал.

2 голосов
/ 31 июля 2011

Если вы используете Razor, поместите [HandleError] в верхней части вашего контроллера.Поместите страницу с ошибкой с именем Error.cshtml в общую папку.

В этом случае настройка в вашем файле web.config должна быть следующей:
customErrors mode = "On"

Любое перенаправление в приведенном выше утверждении не будет использоваться.

Это оно и есть.Необработанные исключения покажут вашу страницу ошибок.Чтобы проверить это в режиме отладки, убедитесь, что customErrors mode = "On" установлен в вашем основном файле web.config.

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