【问题标题】:Custom errors show up only locally, but not on remote server自定义错误仅在本地显示,但不在远程服务器上
【发布时间】:2014-10-28 18:09:00
【问题描述】:

我为我的 ASP.NET MVC 应用程序创建了自定义错误,由于某种原因,它们只显示在我的本地计算机上,但是当我在远程服务器上部署我的应用程序时,会显示默认的 IIS 错误页面(404 和 500)我想了解为什么会这样。这是我的应用配置:

web.config

<system.web>
    ...
        <customErrors mode="On" defaultRedirect="~/ServerError">
          <error statusCode="404" redirect="~/NotFound" />
        </customErrors>
    ...
</system.web>

路由配置

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Error - 404",
        "NotFound",
        new { controller = "Error", action = "NotFound" }
    );

    routes.MapRoute(
        "Error - 500",
        "ServerError",
        new { controller = "Error", action = "ServerError" }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

错误控制器:

public class ErrorController : Controller
{
    [AllowAnonymous]
    public ActionResult ServerError()
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;

        return View();
    }

    [AllowAnonymous]
    public ActionResult NotFound()
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;

        return View();
    }
}

Global.asax

protected void Application_Error(object sender, EventArgs e)
{
    Response.TrySkipIisCustomErrors = true;
}

本地机器 IIS 配置和远程 IIS 配置看起来很相似,但也许我遗漏了一些东西,我也必须正确配置它。

感谢您的帮助。

【问题讨论】:

    标签: asp.net asp.net-mvc-4 iis


    【解决方案1】:

    这样就解决了问题:

    public class ErrorController : Controller
    {
        [AllowAnonymous]
        public ActionResult ServerError()
        {
            Response.StatusCode = (int)HttpStatusCode.InternalServerError;
    
            Response.TrySkipIisCustomErrors = true;
    
            return View();
        }
    
        [AllowAnonymous]
        public ActionResult NotFound()
        {
            Response.StatusCode = (int)HttpStatusCode.NotFound;
    
            Response.TrySkipIisCustomErrors = true;
    
            return View();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多