У меня есть сайт 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-статус 404 на Azure?