【问题标题】:Incorrect message coming when sending 403 status code after hosting on IIS在 IIS 上托管后发送 403 状态代码时出现错误消息
【发布时间】:2020-09-28 08:11:28
【问题描述】:

我在我的 .net MVC 应用程序中创建了一个自定义授权过滤器,用于基于角色的授权。当用户在 handleunauthorizedRequest 方法中未获得授权时,我发送 403 状态码和自定义错误消息(请参阅下面的代码)

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
        {
            filterContext.HttpContext.Response.StatusCode =(int) HttpStatusCode.Forbidden;
            filterContext.HttpContext.Response.Write("Not Authorized");
            filterContext.Result = new EmptyResult();
            //filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Not Authorized");

        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }


    }

在本地主机上运行应用程序时,我收到了正确的错误消息(“未授权”)。但是,在使应用程序在 IIS 服务器中运行后,我得到了 403 状态代码的默认错误页面,因此我从 IIS 中删除了 403 状态的默认错误页面。现在我收到以下错误消息:

您无权查看此目录或页面。

谁能告诉我这条消息来自哪里?

【问题讨论】:

    标签: .net asp.net-mvc http-status-code-403 action-filter asp.net-authorization


    【解决方案1】:

    在阅读了一些博客和 Microsoft 文档后,我能够解决这个问题。我在 web.config 文件中添加了以下行以保持响应不变

     <httpErrors existingResponse="PassThrough" />
    

    您可以在此处阅读有关 httpErros 的信息:microsoft docs

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多