【发布时间】:2015-07-14 03:06:05
【问题描述】:
我想在 global.asax 中使用 Application_Error() 来记录网站上的错误 URL 并重定向到自定义错误登录页面。问题是为什么控制器不存在时网站不通过应用程序错误。
我测试了以下 URL 并且所有内容都通过了应用程序错误:
这个没有通过应用程序错误,返回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 }
);
【问题讨论】:
-
HandleErrorAttribute 是否注册为全局过滤器?您是否考虑过使用 ELMAH(默认记录所有异常)?
-
是的,添加了 HandleErrorAttribute。我会检查ELMAH。谢谢。
标签: c# asp.net asp.net-mvc