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

时间:2016-02-01 22:27:27

标签: c# asp.net asp.net-mvc iis http-status-code-403

在我的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响应,但我没有看到我自定义的Forbidden视图。我只是从IIS获取默认的403视图。更奇怪的是,404视图适用于两种环境。我花了一整天时间比较web.config文件和其他IIS设置来尝试确定我的测试环境有什么不同但没有运气。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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