2017-08-22 70 views
1

我试图在db中保留应用程序池CPU使用大小。有很多应用程序池,我不知道应用程序池的大小。我必须做这样的事情:用于存储的IIS应用程序池标识

应用程序池ID - 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

请了解Microsoft.Web.Administration API。你使用的是过时的。 –

+0

我知道这一点,但即时通讯工作我看不到任何标识为appPool ..再次感谢您的帮助:) @LexLi – girlwiththebluehair

回答

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

+0

[ApplicationPool.Cpu属性](https://msdn.microsoft.com/en-us/ library/microsoft.web.administration.applicationpool.cpu(v = vs.90).aspx)_“获取当前应用程序池的CPU使用参数。”_ – stuartd

+0

谢谢@ankit_sharma ..这不是我所需要的。我必须保持应用程序池ID在数据库中,以获得CPU使用率,但我不知道应用程序池的ID ..我不想让应用程序池的名称在数据库中,因为它不能用.. 我只需要Id为AppPool ..我希望我可以解释.. – girlwiththebluehair

+0

谢谢你和@stuartd ..我必须知道当前的应用程序池ID保持在数据库.. – girlwiththebluehair