2011-09-30 63 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