Manipulação 404 no site do Azure
Eu tenho um site MVC no Azure. Escrevi uma ação de controlador para substituir um recurso, que deve retornar HTTP 404, mas o conteúdo do corpo deve ser algum HTML no qual explico o motivo do erro 404. Isso é implementado como uma ação padrão que defineResponse.StatusCode
. Isso funciona bem localmente, mas quando implantado no Azure, eu não obtenho minha exibição personalizada, mas apenas uma mensagem de erro em texto sem formatação. Eu removi<customErrors>
no Azure para depuração, com o mesmo resultado.
Essa é a resposta bruta recebida quando implantada no 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.
Também é importante, se eu remover a rota que está servindo isso, recebo uma página de erro padrão do .NET 404, então acho que minha ação personalizada está sendo executada. A ação é apenas direta:
[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);
}
}
Como posso obter minha exibição processada ao responder HTTP Status 404 no Azure?