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

C# 自定义403页适用于一种环境,而不是另一种环境,c#,asp.net,asp.net-mvc,iis,http-status-code-403,C#,Asp.net,Asp.net Mvc,Iis,Http Status Code 403,在我的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 Route

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

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


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

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


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

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