проблема
когда я вручную устанавливаю HTTP Status
для своего потока ответов, скажем, 404
или 503
IIS, вместо моего пользовательского представления отображается стандартный контент / представление IIS.
Когда я делаю это с сервером веб-разработки (AKA. Cassini ), он работает правильно (то есть отображается мой контент и response.statuscode
== мои введенные данные).
Есть ли способ, которым я могу отменить это поведение?
Как тиражировать
Создайте веб-приложение ASP.NET MVC1 по умолчанию. Добавьте следующий маршрут
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{*catchall}",
new { controller = "Home", action = "Index" }
);
}
Теперь замените метод индекса HomeController на ...
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
Response.StatusCode = 404;
return View();
}
}
источник
Другой способ обойти это - запустить следующий код в приложении ASP:
Источник: /programming//a/21271085/238753
источник
Будьте осторожны с таким подходом в целом. Вы не должны отображать статус 404.
Я думаю, что когда возвращается код состояния ошибки, IIS возвращает страницу ошибки состояния, которая зарегистрирована в нем, а не результаты обработки. Таким образом, вы можете поместить туда HTML-страницу (или ссылку на страницу aspx). http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx имеет хорошее объяснение того, как настроить страницу с ошибкой.
Но это не имеет значения. Многие браузеры по умолчанию НЕ показывают этот вывод, но что-то установлено в браузере. Так что, если вы полагаетесь на людей, просматривающих вашу страницу 404 - этого может не произойти. Они могут увидеть страницу 404, настроенную для них в браузере.
источник