自定义 403 页面适用于一种环境,而不适用于另一种环境

Posted

技术标签:

【中文标题】自定义 403 页面适用于一种环境,而不适用于另一种环境【英文标题】:Custom 403 page works one environment and not another 【发布时间】:2016-05-10 13:25:00 【问题描述】:

在我的 ASP.NET MVC Web 应用程序中,我尝试发送带有 404 和 403 响应的自定义错误页面。我可以使用 Global.asax.cs 中的以下代码在本地 IIS 上执行此操作。无需 web.config 支持。

protected void Application_EndRequest()

    if (Context.Response.StatusCode == 404)
    
        Response.Clear();

        var rd = new RouteData();
        rd.DataTokens["area"] = "";
        rd.Values["controller"] = "Error";
        rd.Values["action"] = "NotFound";

        IController c = new ErrorController();
        c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
    
    else if (Context.Response.StatusCode == 403)
    
        Response.Clear();
        var rd = new RouteData();
        rd.DataTokens["area"] = "";
        rd.Values["controller"] = "Error";
        rd.Values["action"] = "Forbidden";

        IController c = new ErrorController();
        c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
    

但是,当我将相同的代码部署到我的测试环境时,它不起作用。在我的测试环境中,我仍然收到 403 响应,但我没有看到我的自定义 Forbidden 视图。我只是从 IIS 获得默认的 403 视图。更奇怪的是 404 视图在两种环境中都有效。我整天都在比较 web.config 文件和其他 IIS 设置,试图确定我的测试环境有什么不同,但没有运气。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您在测试服务器上的该路径上是否真的被禁止(用户权限,无读取)?

测试服务器是否与您的开发机器运行相同的 IIS?可能需要更改一些服务器端配置。

【讨论】:

是的,我无法访问正确的资源。然后响应具有状态代码 403,但浏览器中呈现的标记不是我的自定义视图,就像我访问我的 licall IIS 时那样。我的本地IIS是v10,而测试环境是v7。

以上是关于自定义 403 页面适用于一种环境,而不适用于另一种环境的主要内容,如果未能解决你的问题,请参考以下文章

WordPress 搜索仅适用于帖子,不适用于页面

VBA 排序代码仅适用于一张纸,但不适用于多张

SPFx Web 部件的 CSS 适用于它但不适用于页面的其余部分?

CORS 适用于 plnkr,但不适用于浏览器:“响应具有 HTTP 状态代码 403”

自定义 UIViewController 过渡动画适用于演示,但不适用于解雇

FBRequestConnection startForCustomAudienceThirdPartyID:nil 适用于模拟器,而不适用于设备