当控制器不存在时,不会通过应用程序错误

时间:2015-07-14 03:06:06

标签: c# asp.net asp.net-mvc

我想在global.asax中使用Application_Error()来记录网站上的错误网址并重定向到自定义错误登录页面。问题是为什么当控制器不存在时,网站没有通过应用程序错误。

我测试了以下网址以及通过应用程序错误传递的所有内容:

这个没有通过应用程序错误并返回404:

应用程序错误代码:

protected void Application_Error(object sender, EventArgs e)
{
     var requestTime = DateTime.Now;
     Exception ex = Server.GetLastError().GetBaseException();
     //log Request.Url.ToString()
}

RouteConfig.cs代码:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

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

1 个答案:

答案 0 :(得分:0)

请将以下内容添加到RouteConfig.cs

routes.MapRoute(
    name: "NotFound",
    url: "{*url}",
    defaults: new { controller = "Error", action = "NotFound", id = UrlParameter.Optional }
);

某些网址无法解析,上面添加的网址会处理这些情况。在NotFound的{​​{1}}行动中,您可以向用户显示自定义错误页面。

ErrorController