2016-12-04 26 views
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]批註/裝飾器將屬性注入到屬性中。這個日誌服務將通過注入容器初始化。您可以在SO中搜索IoC(例如Unity,autofac,ninject等)以幫助您開始。值得了解這個IoC和依賴注入原則,因爲它可以應用於服務器端和客戶端(JavaScript開發)。

詳細說明你現在擁有什麼。上面的代碼看起來像這樣:

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); 
    } 
} 
相關問題