【问题标题】:ASP.NET MVC: How to serve content while returning status code 404? [duplicate]ASP.NET MVC:如何在返回状态码 404 时提供内容? [复制]
【发布时间】:2011-02-02 14:31:16
【问题描述】:

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

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

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

我目前对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 页面,不是我的用户友好内容)

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

【问题讨论】:

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


    【解决方案1】:

    你已经在做正确的事了。您可以查看 Fiddler 来确认这一点。

    但是,不能保证浏览器会尊重您的内容。 Wikipedia notes:

    但是,Internet Explorer(Internet Explorer 7 之前的版本)不会显示自定义页面,除非它们大于 512 字节,而是选择显示“友好”错误页面。 Google Chrome 包含类似的功能,如果页面大小低于 512 字节,则 404 将替换为由 Google 算法生成的替代建议。

    可能需要对您的视图进行一些试验、错误和按摩,以便提供一个可供各种浏览器实际选择显示的页面。

    【讨论】:

    • 请注意,我看到的页面来自 IIS,而不是我的网络浏览器
    【解决方案2】:

    设置

     Response.TrySkipIisCustomErrors = true; 
    

    成功了。

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2014-10-26
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      相关资源
      最近更新 更多