为什么当你在自定义错误开启时没有自定义错误响应302或200时,asp.net会做正常的404响应?
例如,我尝试了以下所有方法:
<customErrors defaultRedirect="Error.aspx" mode="Off">
<error statusCode="404" redirect="Error.aspx?status=404" />
</customErrors>
和
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" />
</httpErrors>
和
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" />
</httpErrors>
据我所知,顶部的一个给出一个302,因为它重定向到错误页面,第二个给出一个200由于某种原因,最后一个给出一个302.这似乎相当愚蠢,因为我仍然想要一个404 (或其他任何错误代码),但显示友好的消息。
我意识到我可以使用我的错误页面发回不同的响应,但这似乎将404代码提供给错误页面并将302保留在原始请求上。
除非我遗漏了什么......
答案 0 :(得分:4)
你是对的,当customErrors
启用时,ASP.NET表现得有点时髦。简而言之,您可以为redirectMode="ResponseRewrite"
设置customErrors
,并在error.aspx页面中专门设置响应代码。
我在此处发布了详细信息:Keep ASP.NET error pages out of search engines。