0

예외 처리기에서 로그를 삽입하고 게시 로그에 대한 작업을했습니다. 서비스 작업을 올바르게 호출하려면 어떻게해야합니까?WebApi 2 같은 프로젝트의 사용자 지정 클래스에서 호출 작업

매번 인스턴스를 올바르게 작성합니까?

public class CustomExceptionHandler : ExceptionFilterAttribute 
{ 
    public override void OnException(HttpActionExecutedContext actionExecutedContext) 
    { 
     var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()}; 
     System_LogsController controller = new System_LogsController(); 
     controller.PostSystem_Logs(exceptionModel); 
     base.OnException(actionExecutedContext); 
    } 
} 

답변

1

로깅을 처리 할 로깅 서비스 클래스 (컨트롤러 클래스 아님)를 만들어야합니다. 종속성 삽입을 사용하는 경우 사용자 정의 필터 속성에 대해 속성에 [Dependency] 주석/데코레이터를 사용하여 속성 주입을 사용합니다. 이 로깅 서비스는 주입 컨테이너를 통해 초기화됩니다. IoC (예 : Unity, autofac, ninject 등)를 SO에서 검색하면 시작할 수 있습니다. 서버 측과 클라이언트 측 (자바 스크립트 개발) 모두에 적용 할 수 있으므로이 IoC 및 종속성 주입 원칙을 아는 것이 중요합니다.

현재 가지고있는 것을 자세히 설명합니다. 위의 코드는 다음과 같습니다.

public class CustomExceptionHandler : ExceptionFilterAttribute 
{ 
    [Dependency] 
    public ILoggingService LoggingService { get; set; } 

    public override void OnException(HttpActionExecutedContext actionExecutedContext) 
    { 
     var exceptionModel = new System_Logs() { Date = DateTime.Now, Request = actionExecutedContext.Request.RequestUri.AbsoluteUri, Response = actionExecutedContext.Response.Content.ToString()}; 
     LoggingService.PostSystemLogs(exceptionModel); 
     base.OnException(actionExecutedContext); 
    } 
}