如何计算.net核心Webapi请求次数;

时间:2019-03-09 16:14:48

标签: .net asp.net-core

我正在使用ASP.NET Core,我想计算/衡量Web API请求的响应时间。 我该怎么办?

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用AppMetrics软件包,该软件包可帮助您记录应用程序指标(例如请求率),统计一段时间内的用户登录次数,测量执行数据库查询所花费的时间,测量免费的数量。记忆。

此外,您可以可视化输出并将其显示在Grafana中。

答案 1 :(得分:1)

您可以创建自定义响应标头,并使用中间件在此处放置经过的时间。

 public class ResponseTimeMiddleware
{
    // Name of the Response Header, Custom Headers starts with "X-"  
    private const string RESPONSE_HEADER_RESPONSE_TIME = "X-Response-Time-ms";
    // Handle to the next Middleware in the pipeline  
    private readonly RequestDelegate _next;
    public ResponseTimeMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public Task InvokeAsync(HttpContext context)
    {
        // Start the Timer using Stopwatch  
        var watch = new Stopwatch();
        watch.Start();
        context.Response.OnStarting(() => {
            // Stop the timer information and calculate the time   
            watch.Stop();
            var responseTimeForCompleteRequest = watch.ElapsedMilliseconds;
            // Add the Response time information in the Response headers.   
            context.Response.Headers[RESPONSE_HEADER_RESPONSE_TIME] = responseTimeForCompleteRequest.ToString();
            return Task.CompletedTask;
        });
        // Call the next delegate/middleware in the pipeline   
        return this._next(context);
    }
}