我正在使用ASP.NET Core,我想计算/衡量Web API请求的响应时间。 我该怎么办?
谢谢。
答案 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);
}
}