2017-05-25 24 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

采取了这种方法并尝试,非常感谢 –

相关问题