asp.net mvc 응용 프로그램을 개발 중입니다. 아래 내 응용 프로그램의 아키텍처 :Elmah를 UnobservedTaskException과 함께 사용하는 방법
- ServiceLayer // 레이어를 데이터베이스에 액세스하기위한 DBAccessLayer // 층을 연결하는 1
- WebLayer // 웹 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 이벤트를 넣어 WebLayer의 global.asax.cs 파일에서 DBAccessLayer 및 ServiceLayer가 관찰되지 않는 예외가있을 때 해고 할 수 있습니까?
감사합니다.
를 사용할 수 있지만 우리는 현재 HttpContext를 얻을하려고 우리의 애플 리케이션의 코드가 있습니다. 성공하면 Elmah를 통해 기록하고, 그렇지 않으면 이메일을 생성합니다 ... – Jon