2008-12-02 4 views
4

J'ai besoin de savoir comment je peux détecter le pool d'applications en cours d'exécution, afin que je puisse le faire par programmation.Comment détecter quel pool d'applications je suis en train de courir? (IIS6)

Est-ce que quelqu'un sait comment faire cela pour IIS6?

Mon code actuel pour le recyclage de l'app-piscine est:

/// <summary> 
    /// Recycle an application pool 
    /// </summary> 
    /// <param name="IIsApplicationPool"></param> 
    public static void RecycleAppPool(string IIsApplicationPool) { 
     ManagementScope scope = new ManagementScope(@"\\localhost\root\MicrosoftIISv2"); 
     scope.Connect(); 
     ManagementObject appPool = new ManagementObject(scope, new ManagementPath("IIsApplicationPool.Name='W3SVC/AppPools/" + IIsApplicationPool + "'"), null); 

     appPool.InvokeMethod("Recycle", null, null); 
    } 

Répondre

7

Après la recherche, j'ai trouvé la réponse moi-même:

public string GetAppPoolName() { 

     string AppPath = Context.Request.ServerVariables["APPL_MD_PATH"]; 

     AppPath = AppPath.Replace("/LM/", "IIS://localhost/"); 
     DirectoryEntry root = new DirectoryEntry(AppPath); 
     if ((root == null)) { 
      return " no object got"; 
     } 
     string AppPoolId = (string)root.Properties["AppPoolId"].Value; 
     return AppPoolId; 
    } 

Hmm. Ils ont besoin d'un moyen de me laisser définir ma propre réponse comme la réponse.

+0

Vous pouvez le faire maintenant. –

2

J'ai trouvé celui-ci aussi et cela a fonctionné pour moi. Notez que vous devrez peut-être inclure une référence pour using System.DirectoryServices;

private static string GetCurrentApplicationPoolId() 
    { 
     string virtualDirPath = AppDomain.CurrentDomain.FriendlyName; 
     virtualDirPath = virtualDirPath.Substring(4); 
     int index = virtualDirPath.Length + 1; 
     index = virtualDirPath.LastIndexOf("-", index - 1, index - 1); 
     index = virtualDirPath.LastIndexOf("-", index - 1, index - 1); 
     virtualDirPath = "IIS://localhost/" + virtualDirPath.Remove(index); 
     DirectoryEntry virtualDirEntry = new DirectoryEntry(virtualDirPath); 
     return virtualDirEntry.Properties["AppPoolId"].Value.ToString(); 
    }