ASP.NET MVC:如何在返回状态代码404时提供内容?

时间:2010-03-30 18:24:06

标签: c# asp.net-mvc iis http-status-code-404

  

可能重复:
  How to configure IIS to serve my 404 response with my custom content?

我想在ASP.NET MVC应用程序中提供用户友好的“未找到”页面,同时提供404状态代码。 (基于this answer

我已经有了如何捕获无效路由的机制,我的ErrorController/Handle404操作提供了自定义404页面。

我目前的Handle404实施:

    public ActionResult Handle404()
    {
        Response.StatusCode = 404;
        return View("NotFound");
    }

目前,IIS将页面作为404 - File or directory not found. The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.(标准IIS页面,而不是我的用户友好内容)提供

如何在仍然提供内容的同时将{404}状态代码包含在Handle404操作所提供的结果中?

2 个答案:

答案 0 :(得分:15)

设置

 Response.TrySkipIisCustomErrors = true; 

做了这个伎俩。

答案 1 :(得分:0)

你已经做了正确的事情。你可以看看Fiddler来证实这一点。

但是,无法保证浏览器会尊重您的内容。 Wikipedia notes

  但是,Internet Explorer(在Internet Explorer 7之前)不会显示自定义页面,除非它们大于512字节,而是选择显示“友好”错误页面。谷歌浏览器包含类似的功能,如果页面大小不超过512字节,那么404将被谷歌算法生成的替代建议所取代。

为了找到各种浏览器实际选择显示的页面,可能需要对您的视图进行一些试错和按摩以及。