Подтвердить что ты не робот

ASP.NET MVC: как обслуживать контент при возврате кода состояния 404?

Возможный дубликат:
Как настроить IIS для обслуживания моего ответа 404 с помощью моего настраиваемого контента?

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

У меня уже есть механизм, как поймать неверный маршрут, а пользовательская страница 404 обслуживается моим действием ErrorController/Handle404.

Моя текущая реализация Handle404:

    public ActionResult Handle404()
    {
        Response.StatusCode = 404;
        return View("NotFound");
    }

В настоящее время IIS обслуживает страницу как 404 - File or directory not found. The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable. (стандартная страница IIS, а не мой удобный контент)

Как включить код статуса 404 в результат, который будет выполняться с помощью действия Handle404, пока он еще служит для контента?

4b9b3361

Ответ 1

Настройка

 Response.TrySkipIisCustomErrors = true; 

сделал трюк.

Ответ 2

Вы уже делаете правильную вещь. Вы можете посмотреть на Fiddler, чтобы подтвердить это.

Однако, нет гарантии, что браузер будет соблюдать ваш контент. Заметки Википедии:

Internet Explorer (до Internet Explorer 7), однако, не будет отображать пользовательские страницы, если они больше 512 байт, вместо этого отображает "дружественную" страницу ошибок. Google Chrome включает аналогичную функциональность, где 404 заменяется альтернативными предложениями, генерируемыми алгоритмами Google, если размер страницы не превышает 512 байт.

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