zoukankan      html  css  js  c++  java
  • 使用ASP.NET创建IIS站点或虚拟目录(下)

    ///<summary>
            /// Delete the virtual directory in the WebServer
            ///</summary>
            ///<param name="website">webserver name</param>
            ///<param name="vdir">virtual directory name</param>
            public static void DeleteVirtualDir(string website, string vdir)
            {
                if (!GetVirtualDir(website, vdir)) throw new Exception(" The virtual directory don't exist in the website");
                using (DirectoryEntry de = GetWebSiteInfo(website))
                {
                    foreach (DirectoryEntry sub in de.Children)
                    {
                        if (sub.Name == vdir)
                        {
                            de.Invoke("Delete", new string[] { sub.SchemaClassName, vdir });
                            de.CommitChanges();
                        }
                    }
                }
            }
     
     
            private static void UpdateVDirInfo(DirectoryEntry newDE, ref System.Data.PropertyCollection properties)
            {
                //newDE.Properties["AnonyMousUserName"][0] = properties["AnonymousUserName"].ToString();
                //newDE.Properties["AnonymousUserPass"][0] = properties["AnonymousUserPass"].ToString();
                newDE.Properties["AccessRead"][0] = (bool)properties["AccessRead"];
                newDE.Properties["AccessExecute"][0] = (bool)properties["AccessExecute"];
                newDE.Properties["AuthBasic"][0] = (bool)properties["AuthBasic"];
                newDE.Properties["AuthNTLM"][0] = (bool)properties["AuthNTLM"];
                newDE.Properties["ContentIndexed"][0] = (bool)properties["ContentIndexed"];
                newDE.Properties["EnableDefaultDoc"][0] = (bool)properties["EnableDefaultDoc"];
                newDE.Properties["EnableDirBrowsing"][0] = (bool)properties["EnableDirBrowsing"];
                newDE.Properties["AccessSSL"][0] = (bool)properties["AccessSSL"];
                newDE.Properties["AccessScript"][0] = (bool)properties["AccessScript"];
                newDE.Properties["DefaultDoc"][0] = properties["DefaultDoc"].ToString();
                newDE.Properties["Path"][0] = properties["Path"].ToString();
                newDE.Properties["AppIsolated"][0] = (int)properties["AppIsolated"];
                newDE.Properties["AppFriendlyName"][0] = properties["AppFriendlyName"].ToString();
                newDE.Properties["AccessFlags"][0] = (int)properties["AccessFlags"];
                newDE.Properties["FrontPageWeb"][0] = (int)properties["FrontPageWeb"];
                //newDE.Properties["DontLog"][0] = (bool)properties["DontLog"];
                //newDE.Properties["AppRoot"][0] = properties["AppRoot"].ToString();
            }
     
     
     
            private static bool GetVirtualDir(string webSite, string dirName)
            {
                bool result = false;
                using (DirectoryEntry de = GetWebSiteInfo(webSite))
                {
                   
                    if (de != null)
                    {
                        foreach (DirectoryEntry subVD in de.Children)
                        {
                            if (subVD.SchemaClassName == "IIsWebVirtualDir" && subVD.Name == dirName)
                            {
                                result = true;
                                break;
                            }
                        }
                    }
                }
                return result;
               
            }
     
            private static void GetWebSiteInfo(ref Hashtable webServer)
            {
                DirectoryEntries des = iisDE.Children;
                foreach (DirectoryEntry subDE in des)
                {
                   if (subDE.SchemaClassName == "IIsWebServer")
                   {
                      webServer.Add(subDE.Properties["ServerComment"].Value.ToString(), subDE.Name);
                   }
                }
                des = null;
          
            }
     
            private static DirectoryEntry GetWebSiteInfo(string website)
            {
                DirectoryEntry result = null;
                DirectoryEntries des = iisDE.Children;
                foreach (DirectoryEntry subDE in des)
                {
                    if (subDE.SchemaClassName == "IIsWebServer" && subDE.Properties["ServerComment"].Value.ToString() == website)
                    {
                        result = subDE.Children.Find("Root", "IIsWebVirtualDir");
                        break;
                    }
     
                }
                des = null;
                return result;
     
            }
     
            private static int GetWebSiteInfo(int port)
            {
                int result = 1,i=1;
                DirectoryEntries des = iisDE.Children;
                foreach (DirectoryEntry subDE in des)
                {
                    if (subDE.SchemaClassName == "IIsWebServer")
                    {
                        if ((i = Convert.ToInt32(subDE.Name)) >= result)
                        {
                            result = i + 1;
                        }
                        if (subDE.Properties["ServerBindings"][0].ToString() == ":" + port.ToString() + ":")
                        {
                            throw new Exception(" The port is already used");
                        }
                    }
               }
               des = null;
               return result;
            }
     
                   
    }
     
     
    注意在很多文章中认为vde.Invoke("AppCreate", true);可有可无,但该方法能激活网站应用,相当于在一个虚拟目录中的Application settings中点击Create按钮来创建该目录的应用
  • 相关阅读:
    简单取色器
    第一部分实现功能:使用一个TabControl和一个Memo和TDictionary类实现文本临时存储
    功能设计笔记概要
    NFC与RFID简介
    【JAVA设计模式-第四课】观察者模式-屌丝求职记+新闻订阅
    「学习笔记」左偏树
    「SP122」STEVE
    「学习笔记」 FHQ Treap
    「整理」同余
    「目录」数论
  • 原文地址:https://www.cnblogs.com/scgw/p/1944606.html
Copyright © 2011-2022 走看看