在c#中抛出404去customerror.aspx没有302和301
Throw 404 in c# to go to customerror.aspx without 302 and 301
我在 web.config 和 IIS 中为 404 错误设置了自定义错误。
我的自定义错误页面工作正常。
我希望能够从页面加载事件转到我的自定义错误页面。
如果我使用
抛出 404
throw new HttpException(404, "Not found");
我进入自定义错误页面,但查看响应时发现 302 和 301 永久重定向,然后生成 404。
如何删除 302 和 301?
我在抛出异常之前尝试了 Response.Clear() 并且 Response.StatusCode=404.
默认情况下,当出现 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 中,它将与 / 一起使用
我在 web.config 和 IIS 中为 404 错误设置了自定义错误。 我的自定义错误页面工作正常。
我希望能够从页面加载事件转到我的自定义错误页面。
如果我使用
抛出 404throw new HttpException(404, "Not found");
我进入自定义错误页面,但查看响应时发现 302 和 301 永久重定向,然后生成 404。
如何删除 302 和 301?
我在抛出异常之前尝试了 Response.Clear() 并且 Response.StatusCode=404.
默认情况下,当出现 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 中,它将与 / 一起使用