【发布时间】:2014-05-18 17:29:56
【问题描述】:
我正在构建一个服务器监控系统,并希望向 Web API 发送一个请求,并在一个 JSON 对象中获取服务器的运行状况,如果它正常,它的数据库连接是否正常,它的响应时间等等。
如何实现响应时间,说明 Web API 响应请求需要多长时间?
【问题讨论】:
标签: c# asp.net-web-api
我正在构建一个服务器监控系统,并希望向 Web API 发送一个请求,并在一个 JSON 对象中获取服务器的运行状况,如果它正常,它的数据库连接是否正常,它的响应时间等等。
如何实现响应时间,说明 Web API 响应请求需要多长时间?
【问题讨论】:
标签: c# asp.net-web-api
如果要实现 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;
}
}
【讨论】:
您可以在客户端上启动Stopwatch,并在您收到遮阳篷时停止它
【讨论】: