用于存储的IIS应用程序池ID

时间:2017-08-22 14:25:16

标签: c# iis

我正在尝试在db中保留app pool CPU使用大小。有很多应用程序池,我不知道应用程序池的大小。我必须做这样的事情:

  

app pool id - db中的cpu使用大小

但我不知道如何获取应用池标识。我这样做了;

 var appPoolPath = @"IIS://" + Environment.MachineName + "/W3SVC/AppPools";
                using (var w3svc = new DirectoryEntry(appPoolPath))
                {
                    foreach (DirectoryEntry item in w3svc.Children)
                    {
                        // i can get name like item.Name
                        //but
                        // i need current app pool id in loop
                    }
                }

但我看每个应用程序池都有相同的Guid。不一定不一样吗?

1 个答案:

答案 0 :(得分:1)

安装nuget包Microsoft.Web.Administration并按以下方式迭代:

var applicationPools = new ServerManager().ApplicationPools;

foreach (var applicationPool in applicationPools )
{
     Console.WriteLine(applicationPool.Name);
     var cpuInfo = applicationPool.Cpu;
     // extract cpu usage
    // get app pool attributes for current app pool
    var attrValue = applicationPool.GetAttributeValue("<attributeNameHere>");
}

您可以尝试使用GetAttributeValue()方法,我不确定您需要使用哪个属性名称,但它可能类似于:ApplicationPoolIdentity

另请注意此链接可能有用Application Pool Identities