Обработка 404 на веб-сайте Azure
У меня есть веб-сайт MVC на Azure. Я написал действие контроллера для замены ресурса, который должен возвращать HTTP 404, но содержание тела должно быть неким HTML, где я объясняю причину 404. Это реализовано как стандартное действие, которое устанавливаетResponse.StatusCode
, Локально это работает, но при развертывании в Azure я не получаю свое собственное представление, а просто сообщение об ошибке в виде простого текста. Я удалил<customErrors>
на Azure для отладки, с тем же результатом.
Это необработанный ответ, полученный при развертывании в Azure:
HTTP/1.1 404 Not Found
Cache-Control: private
Content-Length: 103
Content-Type: text/html
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/2.5
X-Powered-By: ASP.NET
Date: Sat, 17 Aug 2013 17:24:19 GMT
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Также важно, если я удаляю маршрут, обслуживающий это, я получаю стандартную страницу ошибки .NET 404, поэтому я предполагаю, что мое настраиваемое действие запускается. Действие просто прямое:
[HttpGet]
public ActionResult LegacyMedia(string originalUrl)
{
ViewBag.OriginalUrl = originalUrl;
return new ViewResult404() {ViewName = "LegacyMedia"};
}
public class ViewResult404 : ViewResult
{
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.StatusCode = (int) HttpStatusCode.NotFound;
base.ExecuteResult(context);
}
}
Как получить представление при ответе HTTP Status 404 в Azure?