如何获取 OWIN HttpListener 当前连接数?
How to get OWIN HttpListener current connections count?
我在控制台应用程序中使用 OWIN selfhost WebAPI,它使用 HttpListener。
_owinApplication = WebApp.Start<Startup>(new StartOptions(baseUri));
我如何在某个时间间隔内监控我的应用程序的当前活动连接?
鉴于 HTTP 的性质,实际上不可能监视 "active" 连接,因为 HTTP 中并不真正存在该概念。客户端向您的服务器发送请求,它要么失败,要么收到响应。
当您看到网站报告当前活跃用户时,该数字通常是一个合格的猜测,或者他们可能使用 websockets 或某种 ajax 轮询来监视客户端。
您可以创建自己的 DelegatingHandler,在 WebApi 管道中注册并使用覆盖的 SendAsync 方法监控当前连接:
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// TODO: add this request to some static container (like ConcurrentDictionary)
// let the request to be processed
HttpResponseMessage response;
try
{
response = await base.SendAsync(request, cancellationToken);
}
finally
{
// TODO: remove the request from the static container registered above
}
// return the response
return response;
}
这样您不仅可以监控当前连接数,还可以监控所有请求信息,如URL、IP等
我正在创建自定义中间件,它解决了我的问题
我在控制台应用程序中使用 OWIN selfhost WebAPI,它使用 HttpListener。
_owinApplication = WebApp.Start<Startup>(new StartOptions(baseUri));
我如何在某个时间间隔内监控我的应用程序的当前活动连接?
鉴于 HTTP 的性质,实际上不可能监视 "active" 连接,因为 HTTP 中并不真正存在该概念。客户端向您的服务器发送请求,它要么失败,要么收到响应。
当您看到网站报告当前活跃用户时,该数字通常是一个合格的猜测,或者他们可能使用 websockets 或某种 ajax 轮询来监视客户端。
您可以创建自己的 DelegatingHandler,在 WebApi 管道中注册并使用覆盖的 SendAsync 方法监控当前连接:
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// TODO: add this request to some static container (like ConcurrentDictionary)
// let the request to be processed
HttpResponseMessage response;
try
{
response = await base.SendAsync(request, cancellationToken);
}
finally
{
// TODO: remove the request from the static container registered above
}
// return the response
return response;
}
这样您不仅可以监控当前连接数,还可以监控所有请求信息,如URL、IP等
我正在创建自定义中间件,它解决了我的问题