我正在尝试在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。不一定不一样吗?
答案 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