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

How to Get number of hits to the Web API method

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

现在我有一个要求,我需要跟踪我们的 API 调用,意思是我的 API 被调用了多少次,哪个方法调用了多少次。我也需要将所有信息插入数据库以供将来响应。

有人知道如何实现吗?请分享。

我在想什么:

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

然后可以通过异步调用将方法名推送到数据库。

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

使用动作过滤器。您不想在代码中乱扔日志。

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、文件等)。这些框架将异步记录,因此不会减慢您请求的执行速度。