Страница настраиваемой ошибки ASP.NET MVC (StatusCode 404 выбрасывает 500) - PullRequest
7 голосов
/ 04 марта 2010

В моем файле web.config

установлены customErrors.
<customErrors mode="On" defaultRedirect="/Error/GeneralError">
    <error statusCode="404" redirect="/Error/NotFound"/>
</customErrors>

Это хорошо работает локально. А 404 выбрасывает 404. На общем хостинге он выбрасывает стандартную страницу 404 сервера, если я специально не установил 404 для указания на / Error / NotFound. Все в порядке. Теперь он покажет пользовательскую страницу 404, за исключением того, что код состояния ответа равен 200. Поэтому, если я попытаюсь выдать Response.StatusCode = 404; в моем действии NotFound в ErrorController, как это:

public class ErrorController : Controller
{
    public ActionResult NotFound()
    {
        Response.StatusCode = 404;
        return View();
    }
}

сервер выдает код состояния 500 Internal Server Error, но моя страница GeneralError не отображается, просто пустая белая страница без источника.

Я пробовал много разных комбинаций, но я не могу найти способ заставить его показать свою пользовательскую страницу 404 вместе с ответом 404.

Есть идеи?

Ответы [ 2 ]

20 голосов
/ 04 марта 2010

Я узнал немного интересной информации здесь: http://blog.angrypets.com/2008/03/responsetryskip.html

Response.TrySkipIisCustomErrors = true; 

Установка TrySkipIisCustomErrors в значение true после Response.StatusCode = 404; заботится о проблеме.

1 голос
/ 25 августа 2012

Не используйте элемент customErrors (за исключением поворота mode="On" для локального тестирования). Вместо этого добавьте Application_EndRequest метод к вашему MvcApplication за Marco's Better-Than-Unicorns MVC 404 Answer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...