【发布时间】:2015-06-08 22:28:17
【问题描述】:
是否可以在 Windows 桌面上创建一个活动/闪烁灯来指示 IIS 网页请求何时进入?我们希望在我们的服务器上找到某种每分钟请求数的指示器,有点像硬盘驱动器执行繁重的 I/O 操作时会看到的闪烁灯。然而,这将是一个闪烁的软件指示灯,并且是查看当前网站活动的一种非常简单的方法。
【问题讨论】:
是否可以在 Windows 桌面上创建一个活动/闪烁灯来指示 IIS 网页请求何时进入?我们希望在我们的服务器上找到某种每分钟请求数的指示器,有点像硬盘驱动器执行繁重的 I/O 操作时会看到的闪烁灯。然而,这将是一个闪烁的软件指示灯,并且是查看当前网站活动的一种非常简单的方法。
【问题讨论】:
我可以看到两个解决方案:
您可以使用性能计数器访问一些 IIS 信息。 W3SVC_W3WP 组的 Requests / Sec 计数器将为您提供 IIS 服务器每秒响应的请求数。有关可用 IIS 性能计数器的更多信息,请参阅New worker process performance counters in IIS7。
var counter = new PerformanceCounter("W3SVC_W3WP", "Requests / Sec", "_Total", true);
while (true)
{
var requestPerSecond = (Int32)counter.NextValue();
// do whatever you want
Console.WriteLine(requestPerSecond);
Thread.Sleep(1000);
}
如果您想为每个请求闪烁一个虚拟 LED,以前的解决方案是不够的。您可以使用自定义IHttpModule 拦截查询,该IHttpModule 将与您的虚拟领导进行通信。
public class BlinkModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.EndRequest += context_EndRequest;
}
private void context_EndRequest(Object sender, EventArgs e)
{
Task.Run(() =>
{
// call your virtual led using named pipe or whatever you want
});
}
public void Dispose()
{ }
}
您的虚拟 LED 应用程序应该有一种机制,可以让它从外部应用程序闪烁,例如,您可以使用带有命名管道绑定的 WCF 服务来做到这一点。
【讨论】: