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

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-статус 404 на Azure?

4b9b3361

Ответ 2

Вы можете проверить это, изменив описание.

   Context.Response.StatusCode = 404;
   Context.Response.StatusDescription = "my not found message";
   Context.Response.End();