2010-06-09 11 views
0

Nous construisons un outil d'installation qui peut installer des applications par un fichier de configuration. Il y a beaucoup d'IIS impliqués et nous utilisons principalement WMI pour le travail. Nous avons récemment découvert que 2 des applications utilisent le même site Web et le même pool d'applications. Je peux vérifier le site Web pour voir s'il contient des VDirs et le supprimer (pendant la désinstallation) s'il est vide. Maintenant, je veux faire la même chose avec le pool d'applications: tant qu'il contient des sites Web, je veux ignorer la tâche de désinstallation et laisser la désinstallation de l'autre application la gérer.Vérifier le pool d'applications IIS s'il est vide (C#/IIS6)

Est-il possible de voir s'il existe des sites Web dans un pool d'applications? Tout ce que je veux savoir, c'est si c'est vide ou non.

Merci

Répondre

1

Je pense que le code suivant peut vous aider:

static bool AppPoolIsShared(string appPoolName) 
    { 
    DirectoryEntry appPool = new DirectoryEntry(string.Format("IIS://localhost/w3svc/AppPools/{0}", appPoolName)); 
    if (appPool != null) 
    { 
     try 
     { 
      object[] appsInPool = (object[])appPool.Invoke("EnumAppsInPool", null); 
      if (appsInPool != null && appsInPool.Length > 1) 
      { 
       return true; 
      } 
     } 
     catch 
     { 
      return true; 
     } 
    } 

    return false; 
    } 

Bien sûr, vous pouvez ajuster le comportement à vos besoins.