如何获取 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、文件等)。这些框架将异步记录,因此不会减慢您请求的执行速度。
我在那里有一个应用程序,我正在使用 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、文件等)。这些框架将异步记录,因此不会减慢您请求的执行速度。