Получение правильного Response.StatusCode из Application_OnError (ASP.NET MVC) - PullRequest
1 голос
/ 20 января 2009

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

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

Есть ли способ определить, чем будет StatusCode ?

Ответы [ 2 ]

6 голосов
/ 21 января 2009

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

if ((Context.Server.GetLastError() is HttpException) && ((Context.Server.GetLastError() as HttpException).GetHttpCode() == 404))
{
    // do something
}
0 голосов
/ 20 января 2009

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

...