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

本文关键字:环境 适用于 一个 另一个 不适用 自定义 | 更新日期: 2023-09-27 18:32:45

在我的 ASP.NET MVC Web应用程序中,我正在尝试发送包含404和403响应的自定义错误页面。 我能够在我的本地 IIS 上使用 Global.asax.cs 中的以下代码执行此操作。 不需要 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 响应,但我看不到我的自定义禁止视图。 我只是从 IIS 获得默认的 403 视图。 更奇怪的是,404视图在两种环境中都有效。 我花了一整天的时间比较 web.config 文件和其他 IIS 设置,试图确定我的测试环境的不同之处,但没有运气。 任何帮助将不胜感激。

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

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

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