Manejo 404 en el sitio web de Azure
Tengo un sitio web de MVC en Azure. He escrito una acción de controlador para representar un recurso, que debería devolver HTTP 404, pero el contenido del cuerpo debe ser un poco de HTML donde explico la razón del 404. Esto se implementa como una acción estándar que estableceResponse.StatusCode
. Esto funciona bien localmente, pero cuando se implementa en Azure, no obtengo mi vista personalizada, sino solo un mensaje de error en texto sin formato. He quitado<customErrors>
En Azure para la depuración, con el mismo resultado.
Esta es la respuesta sin formato recibida cuando se implementa en 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.
También es importante, si elimino la ruta que sirve esto, obtengo una página de error estándar de .NET 404, así que supongo que mi acción personalizada se está ejecutando. La acción es sencillamente directa:
[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);
}
}
¿Cómo puedo renderizar mi vista mientras respondo HTTP Status 404 en Azure?