2017-08-22 68 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