Я разрабатываю приложение asp.net mvc. Архитектура моего приложения, как показано ниже:Как заставить Elmah работать с UnobservedTaskException
- DBAccessLayer // слой для доступа к базе
- ServiceLayer // слой для подключения 1 и 3.
- слой WebLayer // Web UI
Я хочу регистрировать все исключения приложений, включая исключения в событии TaskScheduler.UnobservedTaskException.
Я проверил, чтобы сделать, как показано ниже:
protected void Application_Start()
{
...
TaskScheduler.UnobservedTaskException += (object sender, UnobservedTaskExceptionEventArgs excArgs) =>
{
ErrorSignal.FromCurrentContext().Raise(excArgs.Exception);
excArgs.SetObserved();
};
}
но когда событие UnobservedTaskException обжигают, приложение разбился, за исключением, как показано ниже:
System.ArgumentNullException was unhandled
Message=Value cannot be null.
Parameter name: context
Source=Elmah
ParamName=context
StackTrace:
at Elmah.ErrorSignal.FromContext(HttpContext context) in c:\builds\ELMAH\src\Elmah\ErrorSignal.cs:line 67
at MyMvcApplication.<Application_Start>b__0(Object sender, UnobservedTaskExceptionEventArgs excArgs) in ...\Global.asax.cs:line 82
at System.Threading.Tasks.TaskScheduler.PublishUnobservedTaskException(Object sender, UnobservedTaskExceptionEventArgs ueea)
at System.Threading.Tasks.TaskExceptionHolder.Finalize()
Кроме того, я поставил событие UnobservedTaskException в global.asax.cs WebLayer, может ли он быть запущен, когда DBAccessLayer и ServiceLayer имеют незаметные исключения?
Спасибо.
ли не прямо ответить на ваш вопрос, но у нас есть код в наших приложениях, которые пытаются получить текущую HttpContext. Если он преуспеет, он регистрируется через Elmah, в противном случае он генерирует электронную почту ... – Jon