ASP.NET自定义错误页面HTTP响应

rad*_*dm4 8 asp.net iis http http-response-codes

为什么当你打开自定义错误时没有自定义错误响应302或200时,asp.net会做正常的404响应?

例如,我尝试了以下所有方法:

<customErrors defaultRedirect="Error.aspx" mode="Off">
    <error statusCode="404" redirect="Error.aspx?status=404" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)

和

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

和

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

据我所知,顶部的一个给出一个302,因为它重定向到错误页面,第二个给出一个200由于某种原因,最后一个也给了302.这似乎相当愚蠢,因为我仍然想要404(或其他其他错误代码)但显示友好的消息.

我意识到我可以使用我的错误页面发回不同的响应,但这似乎将404代码提供给错误页面并将302保留在原始请求上.

除非我遗漏了什么......

kli*_*ngs 4

customErrors您是对的,启用后 ASP.NET 的行为有点奇怪。简而言之,您可以在 error.aspx 页面中设置redirectMode="ResponseRewrite"并customErrors专门设置响应代码。

我已在此处发布了详细信息:让 ASP.NET 错误页面远离搜索引擎。