我在web.config中为404错误和IIS中设置了自定义错误。 我的自定义错误页面工作正常。
我希望能够从页面加载事件转到我的自定义错误页面。
如果我使用
投掷404throw new HttpException(404, "Not found");
我进入自定义错误页面,但查看响应后,我找到了302并且301永久重定向,然后生成了404。
如何删除302和301?
我在抛出异常之前尝试过Response.Clear(),还有Response.StatusCode = 404。
答案 0 :(得分:1)
默认情况下,当出现HTTP错误时,IIS会将302重定向到错误页面。 您可以告诉IIS改为使用web.config中定义的错误页面重写响应: 使用customErrors标记:
<system.web>
<customErrors redirectMode="ResponseRewrite">
<error statusCode="404" redirect="~/Error404.aspx"/>
</customErrors>
</system.web>
这仅适用于aspx页面,而不适用于ASP.NET MVC
使用httpErrors标记:
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/Error404.aspx" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
使用httpErrors,您无法使用〜/来引用应用程序的根目录,但如果您的应用程序未作为IIS中的子应用程序托管,它将与/一起使用