gpt4 book ai didi

asp.net-mvc-2 - 如何阻止IIS7处理HTTP状态码401?

转载 作者:行者123 更新时间:2023-12-02 10:44:19 29 4
gpt4 key购买 nike

我正在处理我的 ASP.NET MVC 2 项目。我创建异常过滤器来捕获当用户无权查看某些操作时发生的未经授权的访问异常。

[CustomError(typeof(UnauthorizedAccessException), "Error", "UnauthorizedAccess")]
public class MyController : BaseController
{
}

抛出异常后,我的过滤器将转移到配置的 Controller /操作,即以下方法。

public ActionResult UnauthorizedAccess(ExceptionContext context)
{
Response.StatusCode = CustomHttpStatusCode.UnauthorizedUser;

return View(model);
}

最后,在 ASP.NET 应用程序结束此请求之前,它将调用位于 Global.ascx 中的以下方法,将自定义 HTTP 状态代码更改为 HTTP 状态 401(未经授权的访问)。

public void Application_EndRequest(object sender, EventArgs e)
{
if (Response.StatusCode == CustomHttpStatusCode.UnauthorizedUser)
{
Response.StatusCode = 401;
}
}

在我的机器上一切正常(IIS 7.5)。但它在我的部署网站上不起作用。它仍然返回纯文本“您无权查看此目录或页面。”而不是我的自定义错误页面。

PS。以下配置是我当前针对此情况的 web.config。

  <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<customErrors mode="On"></customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="502" subStatusCode="-1" />
<remove statusCode="501" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="412" subStatusCode="-1" />
<remove statusCode="406" subStatusCode="-1" />
<remove statusCode="405" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
</httpErrors>
</system.webServer>
</configuration>

最佳答案

您可以通过两种方式传递 IIS7 默认错误消息

一是设置response.TrySkipIisCustomErrors为true

response.TrySkipIisCustomErrors = true;
response.Status = response.Status;

出于某种原因,如果您不设置response.Status,则不会执行TrySkipIisCustomErrors。

另一个是在web.config中将existingResponse设置为“PassThrough”

<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</configuration>

但这将忽略所有设置的 IIS 自定义错误页面。

关于asp.net-mvc-2 - 如何阻止IIS7处理HTTP状态码401?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358339/

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