2017-05-25 61 views
-1

我有一個應用程序,我正在使用Web API調用我的所有操作。如何獲取點擊次數到Web API方法

現在我有一個要求,我需要跟蹤我們的API調用,這意味着我的API調用了多少次,以及調用了多少次的方法。我需要將每個信息插入數據庫以供將來的響應。

任何人有任何想法如何實現?請分享。

我在想什麼:

在下面的Application_BeginRequest Global.asax中我將檢查URL,並會嘗試找到API方法名。

然後可以通過執行異步調用將方法名稱推送到數據庫。

注:
是否會減慢API的性能?

+0

我猜最好是寫一個「追蹤」方法,類,無論..並在每個api動作中使用它 –

+0

我已經嘗試了下面的方法,因爲api已經存在修改api代碼我不認爲這是一個好主意,因爲我們有很多方法,所以我做了我創建了一個全局動作過濾器,並在這些動作過濾器中編寫了一些跟蹤API方法調用的代碼。感謝您的支持 –

回答

0

使用一個ActionFilter。您不想通過日誌記錄清理代碼。

public class MyLoggingFilter: ActionFilterAttribute 
{ 


    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     Log... 
     //actionContext.ActionDescriptor.ActionName 
     //actionContext.ControllerContext.ControllerDescriptor.ControllerName; 
    } 

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     Log... 
    } 
} 

那麼你應該註冊所有控制器的動作過濾器在你的WebApiConfig

public static void Register(HttpConfiguration config) 
{ 
     // Web API configuration and services 

     config.Filters.Add(new MyLoggingFilter()); 

    config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
} 

然後考慮使用像日誌框架log4net的或NLOG - 這些框架必須追加程序登錄到任何存儲類型( SQL,文件,無論什麼)。這些框架將異步記錄,因此不會減慢請求的執行速度。

+0

採取了這種方法並嘗試,非常感謝 –

相關問題