Может ли ASP.NET MVC Yellow Screen of Death (YSOD) генерироваться по требованию - PullRequest
1 голос
/ 24 ноября 2010

Как спросили здесь .

Я хочу знать, возможно ли получить HTML-рендеринг YSOD для исключений, отправляемых по почте БЕЗ использования ELMAH? Я обрабатываю ошибки и показываю пользовательскую страницу ошибок пользователю. Я также отправляю общую информацию об исключениях по почте, однако я действительно хотел бы знать, могу ли я обернуть их в настоящий встроенный механизм YSOD ASP.NET и сохранить форматирование HTML.

Update1:

У меня есть пользовательские исключения (DupplicatedArbsException), которые возвращают представление с сообщением, которое я считаю "Управляемыми исключениями". Однако, если это настоящая ошибка, которую я не уловил, он вернет представление «Ошибка».

    [HandleError(ExceptionType = typeof(Exception), View = "Error")]
    [HandleError(ExceptionType = typeof(DuplicatedArbsException), View = "ErrorViewArbs")]
    public ActionResult Create(string id, int? version)
    {
         //...
    }

Поднимается ошибка HandleError, которая в настоящее время ничего не делает.

    protected override void OnException(ExceptionContext filterContext)
    {
        var ex = filterContext.Exception;
        base.OnException(filterContext);
    }

..

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

Исключение, возникающее в режиме customErrors = "off", представляет собой YSOD из asp.net. Однако, когда я включаю customErrors mode = "on", эти исключения не включаются в его HTML-эквивалент, а только в сообщения об исключениях (без HTML).

1 Ответ

1 голос
/ 24 ноября 2010

Вы можете обработать событие Application_Error в global.asax, которое запускается механизмом ASP.NET каждый раз, когда исключение не обрабатывается:

protected void Application_Error(object sender, EventArgs e)
{
    var app = (HttpApplication)sender;
    var context = app.Context;
    // get the exception that was unhandled
    Exception ex = context.Server.GetLastError();

    // TODO: log, send the exception by mail
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...