.NET操作IIS7方法集合

引用 Microsoft.Web.Administration;

  public class IISHelper
  {
    #region 端口

    /// <summary>
    /// 判断端口是否被占用
    /// </summary>
    /// <param name="port">端口</param>
    /// <returns></returns>
    public static bool IsPortUsing(int port)
    {
      List<int> portList = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners().Select(item => item.Port).ToList<int>();
      foreach (int item in portList)
      {
        if (item == port)
        {
          return true;
        }
      }
      return false;
    }

    #endregion

    #region 应用程序池

    /// <summary> 
    /// 检查应用程序池是否存在
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolName">应用程序池名称</param> 
    /// <returns></returns>
    public static bool IsPoolExisted(ServerManager serverManager, string appPoolName)
    {
      return serverManager.ApplicationPools[appPoolName] == null ? false : true;
    }

    /// <summary> 
    /// 添加应用程序池
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolName">应用程序池名称</param> 
    /// <param name="ManagedRuntimeVersion">.NET Framework版本</param> 
    /// <param name="ManagedPipelineMode">托管管道模式</param> 
    /// <param name="Enable32BitAppOnWin64">是否启用32位应用程序</param> 
    public static void AddPool(ServerManager serverManager, string appPoolName, string ManagedRuntimeVersion, ManagedPipelineMode ManagedPipelineMode, bool Enable32BitAppOnWin64)
    {
      ApplicationPool pool = serverManager.ApplicationPools[appPoolName];
      if (pool == null)
      {
        serverManager.ApplicationPools.Add(appPoolName);
        pool = serverManager.ApplicationPools[appPoolName];
        pool.ManagedRuntimeVersion = ManagedRuntimeVersion;
        pool.ManagedPipelineMode = ManagedPipelineMode;
        pool.Enable32BitAppOnWin64 = Enable32BitAppOnWin64;
        serverManager.CommitChanges();
      }
    }

    /// <summary> 
    /// 重命名应用程序池名称
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolOldName">应用程序池旧名称</param> 
    /// <param name="appPoolNewName">应用程序池新名称</param> 
    public static void RenamePool(ServerManager serverManager, string appPoolOldName, string appPoolNewName)
    {
      ApplicationPool pool = serverManager.ApplicationPools[appPoolOldName];
      if (pool != null)
      {
        pool.Name = appPoolNewName;
        serverManager.CommitChanges();
      }
    }

    /// <summary> 
    /// 启动应用程序池
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolName">应用程序池名称</param> 
    /// <returns></returns>
    public static void StartPool(ServerManager serverManager, string appPoolName)
    {
      ApplicationPool pool = serverManager.ApplicationPools[appPoolName];
      if (pool != null && (pool.State == ObjectState.Stopped || pool.State == ObjectState.Stopping || pool.State == ObjectState.Unknown))
      {
        pool.Start();
      }
    }

    /// <summary> 
    /// 停止应用程序池
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolName">应用程序池名称</param> 
    /// <returns></returns>
    public static void StopPool(ServerManager serverManager, string appPoolName)
    {
      ApplicationPool pool = serverManager.ApplicationPools[appPoolName];
      if (pool != null && (pool.State == ObjectState.Started || pool.State == ObjectState.Starting))
      {
        pool.Stop();
      }
    }

    /// <summary> 
    /// 删除应用程序池
    /// </summary> 
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="appPoolName">应用程序池名称</param> 
    public static void DeletePool(ServerManager serverManager, string appPoolName)
    {
      ApplicationPool pool = serverManager.ApplicationPools[appPoolName];
      if (pool != null)
      {
        serverManager.ApplicationPools.Remove(pool);
        serverManager.CommitChanges();
      }
    }

    #endregion

    #region 站点

    /// <summary>
    /// 判断站点是否存在
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <returns></returns>
    public static bool IsSiteExisted(ServerManager serverManager, string siteName)
    {
      return GetSite(serverManager, siteName) == null ? false : true;
    }

    /// <summary>
    /// 获取所有的站点
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <returns></returns>
    public static List<Site> GetSites(ServerManager serverManager)
    {
      return serverManager.Sites.ToList<Site>();
    }

    /// <summary>
    /// 获取所有的站点名称
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <returns></returns>
    public static List<string> GetSitesName(ServerManager serverManager)
    {
      return serverManager.Sites.Select(it => it.Name).ToList();
    }

    /// <summary>
    /// 获取指定的站点
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <returns></returns>
    public static Site GetSite(ServerManager serverManager, string siteName)
    {
      return serverManager.Sites[siteName];
    }

    /// <summary>
    /// 获取站点的物理路径
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <returns></returns>
    public static string GetSitePhysicalPath(ServerManager serverManager, string siteName)
    {
      Application app = serverManager.Sites[siteName].Applications.Where(it => it.Path == "/").SingleOrDefault();
      return app != null ? app.VirtualDirectories[0].PhysicalPath : String.Empty;
    }

    /// <summary>
    /// 创建站点
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <param name="sitePhysicalPath">站点物理路径</param>
    /// <param name="sitePort">站点端口</param>
    /// <param name="host">主机</param>
    /// <param name="requestType">请求类型:http或者https</param>
    public static void CreateSite(ServerManager serverManager, string siteName, string sitePhysicalPath, string sitePort, string host, string adminUserName = "", string adminPassword = "", string requestType = "http")
    {
      if (serverManager.Sites[siteName] == null)
      {
        Site site = serverManager.Sites.Add(siteName, requestType, String.Format(@"{host}:{port}:", host, sitePort), sitePhysicalPath);
        if (!string.IsNullOrEmpty(adminUserName) && !string.IsNullOrEmpty(adminPassword))
        {
          VirtualDirectory virtualDic = site.Applications[0].VirtualDirectories[0];
          virtualDic.UserName = adminUserName;
          virtualDic.Password = adminPassword;
        }
        serverManager.CommitChanges();
      }
    }

    /// <summary>
    /// 重命名站点
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteOldName">站点旧名称</param>
    /// <param name="siteNewName">站点新名称</param>
    public static void RenameSite(ServerManager serverManager, string siteOldName, string siteNewName)
    {
      if (serverManager.Sites[siteOldName] != null)
      {
        serverManager.Sites[siteOldName].Name = siteNewName;
        serverManager.CommitChanges();
      }
    }

    /// <summary>
    /// 删除站点
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    public static void DeleteSite(ServerManager serverManager, string siteName)
    {
      if (serverManager.Sites[siteName] != null)
      {
        serverManager.Sites.Remove(serverManager.Sites[siteName]);
        serverManager.CommitChanges();
      }
    }


    #endregion

    #region 应用程序

    /// <summary>
    /// 判断应用程序是否存在
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <param name="appName">应用程序名称</param>
    /// <returns></returns>
    public static bool IsAppExisted(ServerManager serverManager, string siteName, string appName)
    {
      return GetApp(serverManager, siteName, appName) == null ? false : true;
    }

    /// <summary>
    /// 获取指定站点的所有应用程序
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <returns></returns>
    public static List<Microsoft.Web.Administration.Application> GetApp(ServerManager serverManager, string siteName)
    {
      return serverManager.Sites[siteName].Applications.Where(it => it.Path != "/").ToList<Microsoft.Web.Administration.Application>();
    }

    /// <summary>
    /// 获取指定站点的指定应用程序
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <param name="appName">应用程序名称</param>
    /// <returns></returns>
    public static Microsoft.Web.Administration.Application GetApp(ServerManager serverManager, string siteName, string appName)
    {
      if (appName != "/")
      {
        appName = Path.Combine("/" + appName);
      }
      return serverManager.Sites[siteName].Applications.Where(it => it.Path == (appName)).FirstOrDefault();
    }

    /// <summary>
    /// 创建应用程序
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <param name="appName">应用程序名称</param>
    /// <param name="physicalPath">应用程序物理路径</param>
    public static void CreateApp(ServerManager serverManager, string siteName, string appName, string physicalPath)
    {
      if (serverManager.Sites[siteName] != null && serverManager.Sites[siteName].Applications[appName] == null)
      {
        serverManager.Sites[siteName].Applications.Add(Path.Combine("/" + appName), physicalPath);
        serverManager.CommitChanges();
      }
    }

    /// <summary>
    /// 删除应用程序
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <param name="siteName">站点名称</param>
    /// <param name="appName">应用程序名称</param>
    public static void DeleteApp(ServerManager serverManager, string siteName, string appName)
    {
      if (serverManager.Sites[siteName] != null && serverManager.Sites[siteName].Applications[appName] != null)
      {
        serverManager.Sites[siteName].Applications.Remove(serverManager.Sites[siteName].Applications[appName]);
        serverManager.CommitChanges();
      }
    }

    #endregion

    #region 站点应用程序

    /// <summary>
    /// 获取所有的站点和应用程序
    /// </summary>
    /// <param name="serverManager">服务器管理对象</param>
    /// <returns></returns>
    public static List<SiteApp> GetSitesApps(ServerManager serverManager)
    {
      List<SiteApp> SiteAppList = new List<SiteApp>();
      foreach (Site item in serverManager.Sites)
      {
        SiteApp sa = new SiteApp();
        sa.site = item;
        sa.app = new List<Microsoft.Web.Administration.Application>();
        foreach (Microsoft.Web.Administration.Application it in sa.site.Applications.Where(it => it.Path != @"/"))
        {
          sa.app.Add(it);
        }
        SiteAppList.Add(sa);
      }
      return SiteAppList;
    }

    #endregion

    public class SiteApp
    {
      /// <summary>
      /// 站点
      /// </summary>
      public Microsoft.Web.Administration.Site site { get; set; }
      /// <summary>
      /// 应用程序
      /// </summary>
      public List<Microsoft.Web.Administration.Application> app { get; set; }
    }

  }

 

转载于:https://www.cnblogs.com/tlmbem/p/10773619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值