2011-09-30 83 views
3

我有一個虛擬目錄名稱。對於這個虛擬目錄,我必須找出相關的應用程序池。一旦我得到的應用程序池,我一定要找出這個應用程序池中的所有虛擬目錄.. 我使用此代碼,以找出虛擬 目錄相關聯的應用程序池如何在IIS7中獲取與應用程序池關聯的應用程序

string AppPoolName = string.Empty; 
      ServerManager manager = new ServerManager(); 
      foreach (Site site in manager.Sites) 
      { 
       foreach (Application app in site.Applications) 
       { 
        string path = app.Path; 
        path = path.Replace("/", " "); 
        path = path.Trim(); 

        if (path.ToLower() == VDName.ToLower()) 
        { 
         AppPoolName = app.ApplicationPoolName; 
         break; 
        } 
       } 
      } 

回答

2

我認爲我們必須重新運行應用程序池的功能,爲相關應用程序獲取的名字。

ServerManager manager = new ServerManager(); 
     foreach (Site site in manager.Sites) 
     { 
      foreach (Application app in site.Applications) 
      { 

       if (app.ApplicationPoolName.ToString() == AppPoolName) 
       { 
        string appname = app.Path; 
       } 
      } 
     } 
1

或新行沒有循環的方法:

Environment.GetEnvironmentVariable("APP_POOL_ID", EnvironmentVariableTarget.Process); 
4
using (var serverManager = new ServerManager()) 
{ 
    var apps = (from site in serverManager.Sites 
       from app in site.Applications 
       where app.ApplicationPoolName.Equals("DefaultAppPool") 
       select app); 
} 
+2

歡迎來到堆棧溢出!通常情況下,如果答案包含解釋代碼意圖做什麼的解釋,以及爲什麼解決問題而不介紹其他問題,答案會更有幫助。 (這篇文章被至少一個用戶標記,大概是因爲他們認爲沒有解釋的答案應該被刪除。) –

+0

是否可以使用*** appcmd ***? '%windir%\ system32 \ inetsrv \ appcmd list apppool' ... – Kiquenet

相關問題