gpt4 book ai didi

c# - 在 c# 中抛出 404 去 customerror.aspx 没有 302 和 301

转载 作者:太空宇宙 更新时间:2023-11-03 12:13:51 25 4
gpt4 key购买 nike

我在 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 中的子应用程序托管,它将与/一起使用

关于c# - 在 c# 中抛出 404 去 customerror.aspx 没有 302 和 301,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com