如何获取Web API方法的点击次数

时间:2017-05-25 08:25:05

标签: .net c#-4.0 asp.net-web-api global-asax

我有一个应用程序,我正在使用Web API调用我的所有操作。

现在我要求我需要跟踪我们的API调用,这意味着调用API的次数以及调用了多少次的方法。我需要将所有信息插入数据库以供将来响应。

任何人都知道如何实现?请分享。

我在想什么:

在application_beginrequest下的global.asax中,我将检查网址并尝试查找API方法名称。

然后可以通过异步调用将方法名称推送到DB。

注意:
它会降低API性能吗?

1 个答案:

答案 0 :(得分: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 }
        );
}

然后考虑使用Logging框架,如Log4Net或NLog - 这些框架将具有登录任何存储类型(SQL,文件,等等)的附加程序。这些框架将以异步方式记录,因此不会减慢请求的执行速度。