2014-02-04 3 views
0

В моем файле global.asax я написал код в событие Application_Error, которое обнаруживает все ошибки и показывает пользователю общую страницу ошибок, а также регистрирует/отправляет сообщение об ошибке, произошедшей с ошибкой.Вернуть правильный код ошибки HTTP-ошибки в браузер

Однако я понял, что страница с ошибкой не возвращает правильный код статуса браузеру, что означает, что для службы, такой как UptimeRobot, сайт по-прежнему считается функционирующим, даже когда страница нарушена.

Возможно ли получить правильный код состояния из-за ошибки и вернуть его в браузер?

+0

Вы пытались установить свойство 'Response.StatusCode' на странице? – DGibbs

+0

@DGibbs Это не сработает, потому что IIS перехватывает коды ошибок и перенаправляет на страницу отладки или ошибки (если вы явно не установили TrySkipIisCustomErrors в true, см. Ответ ниже). –

+0

@DennisTraub Он будет работать, если был использован «TrySkipIisCustomErrors» http://msdn.microsoft.com/en-us/library/system.web.httpresponse.tryskipiiscustomerrors(v=vs.110).aspx. – DGibbs

ответ

0

По умолчанию IIS перехватывает код состояния и отправляет либо информацию об отладке, либо страницу пользовательской ошибки. Вы можете отключить это поведение по умолчанию и вручную установить код ошибки через объект Response:

Context.Response.TrySkipIisCustomErrors = true; 
Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; 
Context.Response.ContentType = "text/plain"; 
Context.Response.Write("Your error message"); 
Смежные вопросы