我正在构建一个服务器监控系统,并希望向Web API发送请求并在JSON对象中获取服务器的运行状况,如果它没有问题,如果它的数据库连接正常工作,它的响应时间等。
如何实现响应时间,说明Web API响应请求需要多长时间?
答案 0 :(得分:9)
如果要实施Web Api Monitoring,可以创建自定义DelegatingHandler来跟踪操作持续时间和状态。
这是测量操作持续时间的一个非常基本的例子。持续时间被添加到响应中(非常无用);最好将这种数据存储到专用存储库中。
public class MonitoringDelegate : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
CancellationToken cancellationToken)
{
var watcher = Stopwatch.StartNew();
var response = await base.SendAsync(request, cancellationToken);
watcher.Stop();
//store duration somewheren here in the response header
response.Headers.Add("X-Duration", watcher.ElapsedMilliseconds.ToString());
return response;
}
}
答案 1 :(得分:1)
您可以在客户端上启动Stopwatch,并在收到答案后停止