2015-04-08 1 views
1

В моем web.config файле Я включил пользовательские ошибки:Пользовательские 404 Страница не показывать, когда StatusCode не 200

<customErrors mode="On" defaultRedirect="~/Error"> 
    <error redirect="~/Error/NotFound" statusCode="404" /> 
</customErrors> 

Моя NotFound действие:

public ActionResult NotFound() 
{ 
    Response.StatusCode = 404; //no issues when this is not set 
    return View(); 
} 

Проблема: Эта конфигурация работает на локальном сервере, но когда я перемещаю его на удаленный сервер, пользовательские 404 страницы не отображаются (отображается значение по умолчанию 404 IIS), если для кода состояния NotFound действие не установлено на 2 00.

Не могли бы вы объяснить, что происходит?

ответ

4

Вы также хотите отключить пользовательские ошибки IIS, установив TrySkipIisCustomErrors в true.

public ActionResult NotFound() 
{ 
    Response.StatusCode = 404; 
    Response.TrySkipIisCustomErrors = true; <--- 
    return View(); 
} 
+0

Отлично, спасибо. Означает ли это, что на сервере IIS вручную было установлено вручную собственные пользовательские ошибки над приложениями? –

+0

В IIS 7 ** Классический режим **, для параметра TrySkipIisCustomErrors установлено значение true по умолчанию. Однако ** я не рекомендую работать в классическом режиме **, так как вы можете исправить это, просто используя «TrySkipIisCustomErrors = true;» во время работы в новом ** Интегрированном режиме **. – Win

+0

Полезно знать, но мой локальный IIS настроен на использование встроенного режима конвейера, хотя пользовательская обработка 404, похоже, работает очень хорошо (пример выше хорошо работает и на нескольких других серверах). –