Получение правильного Response.StatusCode из Application_OnError (ASP.NET MVC)

Я пытаюсь создать базовое ведение журнала для необработанных исключений в моем приложении ASP.NET MVC, но, поскольку я использую IIS6, все запросы поступают через.NET. Теперь, хотя я согласен с тем, что пропущенные изображения важны для пометки, они не являются ограничителями показа, и поэтому я хотел бы установить высокий приоритет события на 404 с, если только они не являются изображениями (которые получат средний приоритет).

Проблема в том, что в Application_OnError Response.StatusCode - 200, но окончательный результат - 404. В связи с этим я, похоже, не могу следить за 404, чтобы установить соответствующий приоритет.

Есть ли способ сказать, что StatusCode будет?

2 ответа

Решение

Вы можете получить это через Context.Server.GetLastError():

if ((Context.Server.GetLastError() is HttpException) && ((Context.Server.GetLastError() as HttpException).GetHttpCode() == 404))
{
    // do something
}

Вы должны были бы отправить весь трафик через слой.net isapi и выполнить ручную проверку 404 (если файл существует), я бы вообразил

Другие вопросы по тегам