使用customErrors重定向时如何返回合理的错误代码?

时间:2013-01-24 11:55:03

标签: asp.net iis web-config custom-errors http-error

在我的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。

如何在IIS中使用customErrors来获取HTTP 404而不是HTTP 302,然后是HTTP 200?

1 个答案:

答案 0 :(得分:3)

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

redirectMode="ResponseRewrite"

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

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

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