how to get the application pool name for a specific website IIS6 programmatically? C#

前端 未结 3 1899
小鲜肉
小鲜肉 2021-01-06 11:14

how to get the application pool name for a specific website IIS 6 programmatic using C#

EDIT: I already used the methods of DirectoryServices namespace but the appl

3条回答
  •  太阳男子
    2021-01-06 11:58

    The classes in the System.DirectoryServices namespace will help you get that information.

    Check this article by Rick Strahl for an example:

    /// 
    /// Returns a list of all the Application Pools configured
    /// 
    /// 
    public ApplicationPool[] GetApplicationPools()
    {           
        if (ServerType != WebServerTypes.IIS6 && ServerType != WebServerTypes.IIS7)
            return null;
    
        DirectoryEntry root = this.GetDirectoryEntry("IIS://" + this.DomainName + "/W3SVC/AppPools");
          if (root == null)
                return null;
    
        List Pools = new List();
    
        foreach (DirectoryEntry Entry in root.Children)
        {
            PropertyCollection Properties = Entry.Properties;
    
            ApplicationPool Pool = new ApplicationPool();
            Pool.Name = Entry.Name;
    
            Pools.Add(Pool);
        }
    
        return Pools.ToArray();
    }
    
    /// 
    /// Create a new Application Pool and return an instance of the entry
    /// 
    /// 
    /// 
    public DirectoryEntry CreateApplicationPool(string AppPoolName)
    {
        if (this.ServerType != WebServerTypes.IIS6 && this.ServerType != WebServerTypes.IIS7)
            return null;
    
        DirectoryEntry root = this.GetDirectoryEntry("IIS://" + this.DomainName + "/W3SVC/AppPools");
        if (root == null)
            return null;
    
        DirectoryEntry AppPool = root.Invoke("Create", "IIsApplicationPool", AppPoolName) as DirectoryEntry;           
        AppPool.CommitChanges();
    
        return AppPool;
    }
    
    /// 
    /// Returns an instance of an Application Pool
    /// 
    /// 
    /// 
    public DirectoryEntry GetApplicationPool(string AppPoolName)
    {
        DirectoryEntry root = this.GetDirectoryEntry("IIS://" + this.DomainName + "/W3SVC/AppPools/" + AppPoolName);
        return root;
    }
    
    /// 
    /// Retrieves an Adsi Node by its path. Abstracted for error handling
    /// 
    /// the ADSI path to retrieve: IIS://localhost/w3svc/root
    /// node or null
    private DirectoryEntry GetDirectoryEntry(string Path)
    {
    
        DirectoryEntry root = null;
        try
        {
            root = new DirectoryEntry(Path);
        }
        catch
        {
            this.SetError("Couldn't access node");
            return null;
        }
        if (root == null)
        {
            this.SetError("Couldn't access node");
            return null;
        }
        return root;
    }
    

提交回复
热议问题