A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈世涛 中级黑马   /  2012-7-22 19:38  /  1270 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何使用使用asp.net创建IIS虚拟目录。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
用程序的方法在IIS建立站点或虚拟目录(C#)
目的:实现自动建立站点和虚拟目录
平台:windows, vs.net

public class IISHelper
    {
        static DirectoryEntry iisDE = new DirectoryEntry("IIS://localhost/W3SVC");
        ///<summary>
        /// Get The Location IIS WebServers Information
        ///</summary>
        ///<returns></returns>
        public static Hashtable GetLocationIIsWebServers()
        {
            Hashtable result = new Hashtable();
            GetWebSiteInfo(ref result);
            return result;
        }




        ///<summary>
        /// Create a new IIS Webserver
        ///</summary>
        ///<param name="webServerName">webserver name</param>
        ///<param name="path">webserver directory path</param>
        ///<param name="port">access port</param>
        public static void CreateNewIIsWebServer(string webServerName,string path,int port)
        {
            int siteID=GetWebSiteInfo(port);
            using (DirectoryEntry site = (DirectoryEntry)iisDE.Invoke("Create", "IIsWebServer", siteID))
            {
                site.Invoke("Put", "ServerComment", webServerName);
                site.Invoke("Put", "KeyType", "IIsWebServer");
                site.Invoke("Put", "ServerBindings", ":" + port.ToString() + ":");
                site.Invoke("Put", "ServerState", 2);
                site.Invoke("Put", "FrontPageWeb", 1);
                site.Invoke("Put", "DefaultDoc", "index.aspx");
                site.Invoke("Put", "SecureBindings", ":443:");
                site.Invoke("Put", "ServerAutoStart", 1);
                site.Invoke("Put", "ServerSize", 1);
                site.Invoke("SetInfo");
                using (DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir"))
                {
                    siteVDir.Properties["AppIsolated"][0] = 2;
                    siteVDir.Properties["Path"][0] = path;
                    siteVDir.Properties["AccessFlags"][0] = 513;
                    siteVDir.Properties["FrontPageWeb"][0] = 1;
                    //siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/" + siteID + "/"+webServerName;
                    siteVDir.Properties["AppFriendlyName"][0] = webServerName;
                    siteVDir.Invoke("AppCreate", true);
                    siteVDir.CommitChanges();
                }
                site.CommitChanges();
            }
           
        }




        ///<summary>
        /// Create a new virtual directory
        ///</summary>
        ///<param name="website">webserver name</param>
        ///<param name="dirName">virtual directory name</param>
        ///<param name="properties">virtual dirctory properties</param>
        public static void CreateNewVirtualDir(string website, string dirName, System.Data.PropertyCollection properties)
        {
            if(GetVirtualDir(website, dirName)) throw new Exception(" The Virtual Dir is alread existed");
            using (DirectoryEntry de = GetWebSiteInfo(website))
            {
                using (DirectoryEntry vde = de.Children.Add(dirName, "IIsWebVirtualDir"))
                {
                    vde.CommitChanges();
                    de.CommitChanges();
                    UpdateVDirInfo(vde, ref properties);
                    vde.Invoke("AppCreate", true);
                    vde.CommitChanges();
                    de.CommitChanges();

                }
            }

        }



        ///<summary>
        /// Get Common virtual directory setting
        ///</summary>
        ///<param name="path">virtual directory path</param>
        ///<param name="vdir">virtual directory name</param>
        ///<returns></returns>
        public static System.Data.PropertyCollection GetDefaultVirtualDirSetting(string path,string vdir)
        {
            System.Data.PropertyCollection vProperty = new System.Data.PropertyCollection();
            //vProperty.Add("AnonymousUserName","");
            //vProperty.Add("AnonymousUserPass","");
            vProperty.Add("AccessRead", true);
            vProperty.Add("AccessExecute", false);
            vProperty.Add("AuthBasic", true);
            vProperty.Add("AuthNTLM", true);
            vProperty.Add("ContentIndexed", true);
            vProperty.Add("EnableDefaultDoc", true);
            vProperty.Add("EnableDirBrowsing", false);
            vProperty.Add("AccessSSL", false);
            vProperty.Add("AccessScript", false);
            vProperty.Add("DefaultDoc", "index.aspx");
            vProperty.Add("Path", path);
            vProperty.Add("AppIsolated", 2);
            vProperty.Add("AppFriendlyName", vdir);
            vProperty.Add("AccessFlags", 513);
            vProperty.Add("FrontPageWeb", 1);
            //vProperty.Add("DontLog", true);
            //vProperty.Add("AppRoot", "LM/W3SVC/" + siteID + "/" + vdir);
            return vProperty;
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马