如何使用C#从IIS获取当前的Worker Request列表?

CMP*_*MPE 3 c# iis iis-7 request worker

我正在编写RESTful Web服务状态页面的代码.我想知道是否有将IIS的当前请求转移到C#中.

我正在使用IIS 7.0,我想要的信息

IIS>工作程序> ASP.NET v4.0 >请求

在此输入图像描述

Cyr*_*and 8

您可以使用GetRequestsWorkerProcess类型的方法.此类型位于程序集中Microsoft.Web.Administration,可以使用此非官方nuget程序包或通过添加对此dll的引用来安装%WinDir%\System32\InetSrv\Microsoft.Web.Administration.dll

例如:

using (ServerManager manager = new ServerManager())
{
    while (true)
    {
        var requests = manager.ApplicationPools
                                .Where(pool => pool.Name == "FooPool")
                                .SelectMany(pool => pool.WorkerProcesses)
                                .SelectMany(wp => wp.GetRequests(10));

        Console.WriteLine(requests.Count());
        Thread.Sleep(100);
    }
}
Run Code Online (Sandbox Code Playgroud)