zoukankan      html  css  js  c++  java
  • C# 操作IIS

            /// <summary>
            /// 创建网站
            /// </summary>
            /// <param name="strPort"></param>
            /// <param name="strSiteName"></param>
            /// <param name="strFilePath"></param>
            /// <returns></returns>
            public static DirectoryEntry CreateNewSite(string strSiteName, string strFilePath)
            {
                try
                {
                    string strSitePort = GetNewSitePort();
    
                    DirectoryEntry deyRoot = new DirectoryEntry("IIS://localhost/w3svc");
    
                    DirectoryEntry siteEntry = deyRoot.Children.Add(GetNewWebSiteID(), "IIsWebServer");
    
                    siteEntry.Properties["ServerComment"].Value = strSiteName;
    
                    siteEntry.Properties["ServerBindings"].Value = String.Format("{0}:{1}:{2}", "", strSitePort, "");
    
                    siteEntry.Properties["ServerAutoStart"].Value = true;
    
                    //添加虚拟目录,网站本身没有路径,默认的路径即名称为Root的虚拟目录
                    DirectoryEntry rootEntry = siteEntry.Children.Add("Root", "IIsWebVirtualDir");
                    rootEntry.Properties["Path"].Value = strFilePath;                       //文件夹路径
                    rootEntry.Properties["AccessRead"][0] = true;                           //读取权限
                    rootEntry.Properties["AccessExecute"][0] = false;                       //执行(如ISAPI应用程序或CGI)
                    rootEntry.Properties["AccessWrite"][0] = true;                          //写入
                    rootEntry.Properties["AccessScript"][0] = true;                         //执行脚本(如ASP)
                    rootEntry.Properties["EnableDirBrowsing"][0] = true;                   //浏览
                    rootEntry.Properties["DefaultDoc"][0] = "Default.aspx";  //设置默认文档,多值情况下中间用逗号分割
                    rootEntry.CommitChanges(); siteEntry.CommitChanges(); return rootEntry;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString() + "站点创建失败!"); return null;
                }
            }
    
    
            ///   <summary>  
            ///   删除站点  
            ///   </summary>  
            ///   <param   name="WebSiteName">站点名</param>  
            ///   <returns>成功或失败信息!</returns>  
            public static void DeleteWebSite(string WebSiteName)
            {
                try
                {
                    string SiteID = GetWebSiteID(WebSiteName);
        
    
                    DirectoryEntry deRoot = new DirectoryEntry("IIS://localhost/W3SVC");
                    try
                    {
                        DirectoryEntry deVDir = new DirectoryEntry();
                        deRoot.RefreshCache();
                        deVDir = deRoot.Children.Find(SiteID, "IIsWebServer");
                        deRoot.Children.Remove(deVDir);
    
                        deRoot.CommitChanges();
                        deRoot.Close();
                       
                    }
                    catch (System.Exception)
                    {
                        throw;
                    }
                }
                catch (Exception e)
                {
                    throw;
                }
            }
    
    
            //查找对应的虚拟站点.  
            public  static string GetWebSiteID(string WebSiteName)
            {
                DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
                try
                {
                    string SiteID = null;
                    string hostname;
                    foreach (DirectoryEntry bb in root.Children)
                    {
                        try
                        {
                            //if(Convert.ToInt32(bb.Name.Trim())   <   0)   continue;  
                            PropertyValueCollection pvc = bb.Properties["ServerBindings"];
    
                            String[] srvBindings = ((string)pvc[0]).Split(new char[] { ':' });
                            hostname = srvBindings[2].Trim();
    
                            //判断,可换用hostname  
                            if   (WebSiteName   ==   bb.Properties["ServerComment"].Value.ToString())   SiteID=bb.Name;    
               
                        }
                        catch { }
                    }
                    if (SiteID == null) return null;
                    return SiteID;
                }
                catch
                {
                    return null;
                }
            }   
    
            /// <summary>
            /// 获取新网站ID
            /// </summary>
            /// <returns></returns>
            private static string GetNewWebSiteID()
            {
                int iWebSiteCount = 0;
    
                DirectoryEntry siteEntry = new DirectoryEntry("IIS://localhost/w3svc");
    
                foreach (DirectoryEntry childEntry in siteEntry.Children)
                {
                    if (childEntry.SchemaClassName == "IIsWebServer") iWebSiteCount++;
                }
    
                return (iWebSiteCount + 1).ToString();
            }
    
            /// <summary>
            /// 获取新站点端口,默认为当前最大端口号加一
            /// </summary>
            /// <returns></returns>
            private static string GetNewSitePort()
            {
                int iDefault = 8000;
    
                DirectoryEntry siteEntry = new DirectoryEntry("IIS://localhost/w3svc");
    
                foreach (DirectoryEntry childEntry in siteEntry.Children)
                {
                    if (childEntry.SchemaClassName == "IIsWebServer")
                    {
                        if (childEntry.Properties["ServerBindings"].Value != null)
                        {
                            string strSettings = childEntry.Properties["ServerBindings"].Value.ToString();
    
                            int iSettingPort = int.Parse(strSettings.Substring(strSettings.IndexOf(':') + 1, (strSettings.LastIndexOf(':') - strSettings.IndexOf(':') - 1)));
    
                            iDefault = iSettingPort > iDefault ? iSettingPort : iDefault;
                        }
                    }
                }
    
                return (iDefault + 1).ToString();
            }
            /// <summary>
            /// 判断网站是否已经存在
            /// </summary>
            /// <param name="strSiteName"></param>
            /// <returns></returns>
            public static bool IsExistWebSite(string strSiteName)
            {
                bool blExist = false;
    
                DirectoryEntry siteEntry = new DirectoryEntry("IIS://localhost/w3svc");
    
                foreach (DirectoryEntry childEntry in siteEntry.Children)
                {
                    if (childEntry.SchemaClassName == "IIsWebServer")
                    {
                        if (childEntry.Properties["ServerComment"].Value != null)
                        {
                            if (childEntry.Properties["ServerComment"].Value.ToString() == strSiteName) blExist = true;
                        }
                    }
                }
    
                return blExist;
            }
    
            /// <summary>
            /// 创建虚拟目录
            /// </summary>
            /// <param name="strDirName">虚拟目录名称</param>
            /// <param name="strDirPath">虚拟目录路径</param>
            /// <param name="siteEntry">要创建虚拟目录的原站点</param>
            /// <returns></returns>
            public static DirectoryEntry CreateVirtualDirectory(string strDirName, string strDirPath, DirectoryEntry rootEntry)
            {
                try
                {
                    DirectoryEntry childEntry = rootEntry.Children.Add(strDirName, "IIsWebVirtualDir");
    
                    childEntry.Invoke("AppCreate", true);
                    childEntry.Properties["Path"].Value = strDirPath;// @"D:\公司项目\盘县联网\SafetyProduce\SafetyNet\";        //文件夹路径
                    childEntry.Properties["AppFriendlyName"][0] = strDirName;//应用程序名称 
                    childEntry.Properties["AccessRead"][0] = true;           //读取权限
                    childEntry.Properties["AccessExecute"][0] = true;       //执行(如ISAPI应用程序或CGI)
                    childEntry.Properties["AccessWrite"][0] = true;          //写入
                    childEntry.Properties["AccessScript"][0] = true;         //执行脚本(如ASP)
                    childEntry.Properties["EnableDirBrowsing"][0] = true;   //浏览
                    childEntry.Properties["DefaultDoc"][0] = "Default.aspx"; ////设置默认文档,多值情况下中间用逗号分割
    
                    childEntry.CommitChanges(); rootEntry.CommitChanges(); return childEntry;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString() + "虚拟目录" + strDirName + "创建失败!"); return null;
                }
            }
  • 相关阅读:
    作业4.称体重
    一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.
    一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
    Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查
    学习Django,http协议,
    值类型之间的相互转化,运算符,if条件判断,循环,函数
    js导读,js引入,js选择器,事件,操作页面文档,计算后样式,数据类型
    字体图标,盒子显隐,overflow属性,伪类设计边框,盒子阴影2d形变
    浮动布局,定位布局(固定定位,绝对定位,相对定位),过渡动画
    盒子总结,文本属性操作,reset操作,高级选择器,高级选择器优先级,边界圆角(了解),a标签的四大伪类,背景图片操作,背景图片之精灵图
  • 原文地址:https://www.cnblogs.com/Shadow3627/p/3063680.html
Copyright © 2011-2022 走看看