我有一个 MVC 4 Web 应用程序。使用 ELMAH 和 Elmah.Contrib.WebApi,我的控制器或 API 控制器(或其底层服务)中发生的任何异常都会被完美记录。
我遇到麻烦的地方是手动记录错误。具体来说,在我的 Global.asax 中,我有很多初始化代码(设置 automapper 等)。为了捕捉初始化代码中可能发生的问题,我有以下内容:
protected void Application_Start()
{
try
{
ControllerBuilder.Current.SetControllerFactory(new ErrorHandlingControllerFactory());
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
GlobalConfiguration.Configuration.Filters.Add(new ElmahHandleErrorApiAttribute());
AutoMapperConfiguration.Configure();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
DatabaseConfig.Initialize();
SecurityConfig.Initialize();
}
catch (Exception e)
{
var context = HttpContext.Current;
var signal = ErrorSignal.FromContext(context);
if (signal != null)
{
signal.Raise(e, context);
}
}
}
ELMAH 永远不会记录在“catch”块内捕获的任何异常。然而,我知道 ELMAH 正在工作,因为从此时起,在任何控制器内将发生的任何其他异常都将被记录。因此,我已经排除了 web.config 等问题。
有什么建议么?谢谢。