2

在我的 ASP.NET 网站的 web.config 中,我已customErrors打开并设置为在 HTTP 404 的情况下重定向到特定操作:

现在我启动 Fiddler 并在我的浏览器中查询一些产生 HTTP 404 的 URL。Fiddler 清楚地表明,首先浏览器查询该 URL 并获取带有路径的 HTTP 302<...>/Error/FileNotFound并查询该路径,最后接收 HTTP 200。

因此,原来的 HTTP 404 有效地消失了,我得到了 HTTP 302,然后是 HTTP 200。

同时,如果我从 StackOverflow 查询一些无效地址(例如https://stackoverflow.com/ques/ask),我会在单个请求中获得 HTTP 404。我提到这一点是因为 StackOverflow 也使用 ASP.NET。

如何customErrors在 IIS 中使用 HTTP 404 而不是 HTTP 302 后跟 HTTP 200?

4

1 回答 1

3

customErrors节点中,您可以设置以下属性:

redirectMode="ResponseRewrite"

这将阻止页面重定向,而是写入错误页面而不是请求的页面。

注意:您还必须确保用作 404 错误页面的页面实际上本身在代码隐藏中返回 404 状态代码;MS 重写支持不会自动传递状态代码,请参见链接:

https://connect.microsoft.com/VisualStudio/feedback/details/507171/asp-net-returns-incorrect-status-code-even-with-redirectmode-responserewrite

于 2013-01-24T11:59:36.507 回答