设为首页 收藏本站
查看: 677|回复: 0

[经验分享] c#操作IIS

[复制链接]

尚未签到

发表于 2015-8-15 10:20:26 | 显示全部楼层 |阅读模式
  using System;
using System.DirectoryServices;
using System.Collections;
namespace WayControls.IIS
{
    /**//// <summary>
    /// IISWebServer的状态
    /// </summary>
    public enum IISServerState
    {
        /**//// <summary>
        ///
        /// </summary>
        Starting = 1,
        /**//// <summary>
        ///
        /// </summary>
        Started = 2,
        /**//// <summary>
        ///
        /// </summary>
        Stopping = 3,
        /**//// <summary>
        ///
        /// </summary>
        Stopped = 4,
        /**//// <summary>
        ///
        /// </summary>
        Pausing = 5,
        /**//// <summary>
        ///
        /// </summary>
        Paused = 6,
        /**//// <summary>
        ///
        /// </summary>
        Continuing = 7
  }
    /**//// <summary>
    /// IISManagement 的摘要说明。
    /// </summary>
    public class IISManagement
    {
        /**//// <summary>
        ///
        /// </summary>
        public IISWebServerCollection WebServers = new IISWebServerCollection();
        internal static string Machinename = "localhost";
        /**//// <summary>
        ///
        /// </summary>
        public IISManagement()
        {
            start();
        }
  
        /**//// <summary>
        ///
        /// </summary>
        /// <param name="MachineName">机器名,默认值为localhost</param>
        public IISManagement(string MachineName)
        {
            if( MachineName.ToString() != "" )
                Machinename = MachineName;
            start();
        }
private void start()
        {
                        
            DirectoryEntry Service = new DirectoryEntry("IIS://" + Machinename + "/W3SVC");
            DirectoryEntry Server;
            DirectoryEntry Root = null;
            DirectoryEntry VirDir;
            IEnumerator ie = Service.Children.GetEnumerator();
            IEnumerator ieRoot;
            IISWebServer item;
            IISWebVirtualDir item_virdir;
            bool finded = false;
            while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    item = new IISWebServer();
                    item.index = Convert.ToInt32(Server.Name);
  item.ServerComment = (string)Server.Properties["ServerComment"][0];
                    item.AccessRead = (bool)Server.Properties["AccessRead"][0];
                    item.AccessScript = (bool)Server.Properties["AccessScript"][0];
                    item.DefaultDoc = (string)Server.Properties["DefaultDoc"][0];
                    item.EnableDefaultDoc = (bool)Server.Properties["EnableDefaultDoc"][0];
                    item.EnableDirBrowsing = (bool)Server.Properties["EnableDirBrowsing"][0];
                    ieRoot = Server.Children.GetEnumerator();
  while( ieRoot.MoveNext() )
                    {
                        Root = (DirectoryEntry)ieRoot.Current;
                        if( Root.SchemaClassName == "IIsWebVirtualDir" )
                        {
                            finded = true;
                            break;
                        }
                    }
                    if( finded )
                    {
                        item.Path = Root.Properties["path"][0].ToString();
                    }
                    
                    item.Port = Convert.ToInt32( ((string)Server.Properties["Serverbindings"][0]).Substring(1 ,((string)Server.Properties["Serverbindings"][0]).Length - 2 ) );
                    this.WebServers.Add_(item);
                    ieRoot = Root.Children.GetEnumerator();
                    while( ieRoot.MoveNext() )
                    {
                        VirDir = (DirectoryEntry)ieRoot.Current;
                        if( VirDir.SchemaClassName != "IIsWebVirtualDir" && VirDir.SchemaClassName != "IIsWebDirectory" )
                            continue;
                        item_virdir = new IISWebVirtualDir(item.ServerComment);
                        item_virdir.Name = VirDir.Name;
                        item_virdir.AccessRead = (bool)VirDir.Properties["AccessRead"][0];
                        item_virdir.AccessScript = (bool)VirDir.Properties["AccessScript"][0];
                        item_virdir.DefaultDoc = (string)VirDir.Properties["DefaultDoc"][0];
                        item_virdir.EnableDefaultDoc = (bool)VirDir.Properties["EnableDefaultDoc"][0];
                        if( VirDir.SchemaClassName == "IIsWebVirtualDir" )
                        {
                            item_virdir.Path = (string)VirDir.Properties["Path"][0];
                        }
                        else if( VirDir.SchemaClassName == "IIsWebDirectory" )
                        {
                            item_virdir.Path = Root.Properties["Path"][0] + "\" + VirDir.Name;
                        }
                        item.WebVirtualDirs.Add_(item_virdir);
                    }
                }
            }
        }
  /**//// <summary>
        /// 创建站点
        /// </summary>
        /// <param name="iisServer"></param>
        public static void CreateIISWebServer(IISWebServer iisServer)
        {
            if( iisServer.ServerComment.ToString() == "" )
                throw(new Exception("IISWebServer的ServerComment不能为空!"));
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server;
            int i = 0 ;
            IEnumerator ie = Service.Children.GetEnumerator();
  while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    if( Convert.ToInt32(Server.Name) > i )
                        i = Convert.ToInt32(Server.Name);
//                    if( Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":" )   
//                    {
//                        Server.Invoke("stop",new object[0]);
//                    }
                }
            }
  i++;
  try
            {
                iisServer.index = i;
                Server = Service.Children.Add(i.ToString() , "IIsWebServer");
                Server.Properties["ServerComment"][0] = iisServer.ServerComment;
                Server.Properties["Serverbindings"].Add(":" + iisServer.Port + ":");
                Server.Properties["AccessScript"][0] = iisServer.AccessScript;
                Server.Properties["AccessRead"][0] = iisServer.AccessRead;
                Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
                Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
                Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;
  DirectoryEntry    root = Server.Children.Add("Root","IIsWebVirtualDir");
                root.Properties["path"][0] = iisServer.Path;
               
  Service.CommitChanges();
                Server.CommitChanges();
                root.CommitChanges();
                root.Invoke("AppCreate2" , new object[1] {2});
                //Server.Invoke("start",new object[0]);
            }
            catch(Exception es)
            {
                throw(es);
            }
        }
                      /**//// <summary>
        /// 删除IISWebServer
        /// </summary>
        public static void RemoveIISWebServer(string ServerComment)
        {
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server;
            IEnumerator ie = Service.Children.GetEnumerator();
  ServerComment = ServerComment.ToLower();
            while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    if( Server.Properties["ServerComment"][0].ToString().ToLower() == ServerComment )
                    {
                        Service.Children.Remove(Server);
                        Service.CommitChanges();
                        return ;
                    }
                }
            }
        }
  /**//// <summary>
        /// 删除IISWebServer
        /// </summary>
        public static void RemoveIISWebServer(int index)
        {
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            try
            {
                DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
                if( Server != null )
                {
                    Service.Children.Remove(Server);
                    Service.CommitChanges();
                }
                else
                {
                    throw(new Exception("找不到此IISWebServer"));
                }
            }
            catch
            {
                throw(new Exception("找不到此IISWebServer"));
            }
        }
  /**//// <summary>
        /// 检查是否存在IISWebServer
        /// </summary>
        /// <param name="ServerComment">网站说明</param>
        /// <returns></returns>
        public static bool ExistsIISWebServer(string ServerComment)
        {
            ServerComment = ServerComment.Trim();
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server = null;
            IEnumerator ie = Service.Children.GetEnumerator();
  string comment;
            while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
                    if( comment == ServerComment.ToLower() )   
                    {
                        return true;
                    }
                }
            }
  return false;
        }
                     /**//// <summary>
        /// 返回指定的IISWebServer
        /// </summary>
        /// <param name="ServerComment"></param>
        /// <returns></returns>
        internal static DirectoryEntry returnIISWebserver(string ServerComment)
        {
            ServerComment = ServerComment.Trim();
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server = null;
            IEnumerator ie = Service.Children.GetEnumerator();
  string comment;
            while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    comment = Server.Properties["ServerComment"][0].ToString().ToLower().Trim();
                    if( comment == ServerComment.ToLower() )   
                    {
                        return Server;
                    }
                }
            }
  return null;
        }
  
        /**//// <summary>
        ///  返回指定的IISWebServer
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        internal static DirectoryEntry returnIISWebserver(int index)
        {
            DirectoryEntry Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
            try
            {
                IEnumerator ie = Server.Children.GetEnumerator();
                return Server;
            }
            catch
            {
                return null;
            }
        }
  private static DirectoryEntry getRoot( DirectoryEntry Server )
        {
            foreach( DirectoryEntry child in Server.Children )
            {
                string name = child.Name.ToLower();
                if( name == "iiswebvirtualdir" || name == "root" )
                {
                    return child;
                }
            }
            return null;
        }
  /**//// <summary>
        /// 修改与给定的IISWebServer具有相同网站说明的站点配置
        /// </summary>
        /// <param name="iisServer">给定的IISWebServer</param>
        public static void EditIISWebServer(IISWebServer iisServer)
        {
            if( iisServer.index == -1 )
                throw(new Exception("找不到给定的站点!"));
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server;
  IEnumerator ie = Service.Children.GetEnumerator();
  while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    if( Server.Properties["Serverbindings"][0].ToString() == ":" + iisServer.Port + ":" )   
                    {
                        Server.Invoke("stop",new object[0]);
                    }
                }
            }
  Server = returnIISWebserver(iisServer.index);
            if( Server == null )
            {
                throw( new Exception("找不到给定的站点!"));
            }
  try
            {
  Server.Properties["ServerComment"][0] = iisServer.ServerComment;
                Server.Properties["Serverbindings"][0] = ":" + iisServer.Port + ":";
                Server.Properties["AccessScript"][0] = iisServer.AccessScript;
                Server.Properties["AccessRead"][0] = iisServer.AccessRead;
                Server.Properties["EnableDirBrowsing"][0] = iisServer.EnableDirBrowsing;
                Server.Properties["DefaultDoc"][0] = iisServer.DefaultDoc;
                Server.Properties["EnableDefaultDoc"][0] = iisServer.EnableDefaultDoc;
  DirectoryEntry root = getRoot( Server );
        
                Server.CommitChanges();
                if( root != null )
                {
                    root.Properties["path"][0] = iisServer.Path;
                    root.CommitChanges();
                }
               
                Server.Invoke("start",new object[0]);
            }
            catch(Exception es)
            {
                throw(es);
            }
        }
                     /**//// <summary>
        /// 返回所有站点的网站说明
        /// </summary>
        /// <returns></returns>
        public static ArrayList returnIISServerComment()
        {
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server;
  ArrayList list = new ArrayList();
            IEnumerator ie = Service.Children.GetEnumerator();
  while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    list.Add(Server.Properties["ServerComment"][0]);
                }
            }
  return list;
        }
  /**//// <summary>
        /// 创建虚拟目录
        /// </summary>
        /// <param name="iisVir"></param>
        /// <param name="deleteIfExist"></param>
        public static void CreateIISWebVirtualDir(IISWebVirtualDir iisVir , bool deleteIfExist)
        {
            if( iisVir.Parent == null )
                throw(new Exception("IISWebVirtualDir没有所属的IISWebServer!"));
  DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
            
            if( Server == null )
            {
                throw( new Exception("找不到给定的站点!"));
            }
            
            Server = getRoot( Server );
            if( deleteIfExist )
            {
                foreach( DirectoryEntry VirDir in Server.Children )
                {
                    if( VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower() )
                    {
                        Server.Children.Remove(VirDir);
                        Server.CommitChanges();
                        break;
                    }
                }
            }
  try
            {
                DirectoryEntry vir;
                vir = Server.Children.Add(iisVir.Name , "IIsWebVirtualDir");
                vir.Properties["Path"][0] = iisVir.Path;
                vir.Properties["DefaultDoc"][0] = iisVir.DefaultDoc;
                vir.Properties["EnableDefaultDoc"][0] = iisVir.EnableDefaultDoc;
                vir.Properties["AccessScript"][0] = iisVir.AccessScript;
                vir.Properties["AccessRead"][0] = iisVir.AccessRead;
                vir.Invoke("AppCreate2" , new object[1] {2});
  Server.CommitChanges();
                vir.CommitChanges();
  }
            catch(Exception es)
            {
                throw(es);
            }
  }
  /**//// <summary>
        /// 删除虚拟目录
        /// </summary>
        /// <param name="WebServerComment">站点说明</param>
        /// <param name="VirtualDir">虚拟目录名称</param>
        public static void RemoveIISWebVirtualDir(string WebServerComment, string VirtualDir)
        {
            VirtualDir = VirtualDir.ToLower();
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server = returnIISWebserver(WebServerComment);
  if (Server == null)
            {
                throw (new Exception("找不到给定的站点!"));
            }
  Server = getRoot(Server);
            foreach (DirectoryEntry VirDir in Server.Children)
            {
                if (VirDir.Name.ToLower().Trim() == VirtualDir)
                {
                    Server.Children.Remove(VirDir);
                    Server.CommitChanges();
                    return;
                }
            }
  throw (new Exception("找不到给定的虚拟目录!"));
        }
        /**//// <summary>
        /// 删除虚拟目录
        /// </summary>
        /// <param name="iisVir"></param>
        public static void RemoveIISWebVirtualDir(IISWebVirtualDir iisVir)
        {
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server = returnIISWebserver(iisVir.Parent.index);
            
            if( Server == null )
            {
                throw(new Exception( "找不到给定的站点!"));
            }
            
            Server = getRoot( Server );
            foreach( DirectoryEntry VirDir in Server.Children )
            {
                if( VirDir.Name.ToLower().Trim() == iisVir.Name.ToLower() )
                {
                    Server.Children.Remove(VirDir);
                    Server.CommitChanges();
                    return;
                }
            }
  throw(new Exception( "找不到给定的虚拟目录!"));
        }
  }
           /**//// <summary>
    ///
    /// </summary>
    public class IISWebServerCollection:CollectionBase
    {
        
        /**//// <summary>
        ///
        /// </summary>
        public IISWebServer this[int Index]
        {
            get
            {
                return (IISWebServer)this.List[Index];
               
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        public IISWebServer this[string ServerComment]
        {
            get
            {
                ServerComment = ServerComment.ToLower().Trim();
                IISWebServer list;
                for(int i = 0 ; i < this.List.Count ; i++)
                {
                    list = (IISWebServer)this.List;
                    if(list.ServerComment.ToLower().Trim() == ServerComment)
                        return list;
                }
                return null;
            }
        }
  internal void Add_(IISWebServer WebServer)
        {
            this.List.Add(WebServer);
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebServer"></param>
        public void Add(IISWebServer WebServer)
        {
            try
            {
                this.List.Add(WebServer);
                IISManagement.CreateIISWebServer(WebServer);
            }
            catch
            {
                throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
            }
            
        }
  /**//// <summary>
        /// 是否包含指定的网站
        /// </summary>
        /// <param name="ServerComment"></param>
        /// <returns></returns>
        public bool Contains(string ServerComment)
        {
            ServerComment = ServerComment.ToLower().Trim();
            for( int i = 0 ; i < this.List.Count ; i++ )
            {
                IISWebServer server = this;
                if( server.ServerComment.ToLower().Trim() == ServerComment )
                    return true;
            }
            return false;
        }
  /**//// <summary>
        /// 是否包含指定的网站
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public bool Contains(int index)
        {
            for( int i = 0 ; i < this.List.Count ; i++ )
            {
                IISWebServer server = this;
                if( server.index == index )
                    return true;
            }
            return false;
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebServers"></param>
        public void AddRange(IISWebServer [] WebServers)
        {
            for(int i = 0 ; i <= WebServers.GetUpperBound(0) ; i++)
            {
                Add(WebServers);
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebServer"></param>
        public void Remove(IISWebServer WebServer)
        {
            for(int i=0;i<this.List.Count;i++)
            {
                if((IISWebServer)this.List == WebServer)
                {
                    this.List.RemoveAt(i);
                    return;
                }
            }
            IISManagement.RemoveIISWebServer(WebServer.index);
        }
    }
   
  /**///////////////////
    /// <summary>
    ///
    /// </summary>
    public class IISWebServer
    {
        /**//// <summary>
        ///
        /// </summary>
        internal int index = -1;
        /**//// <summary>
        ///
        /// </summary>
        public IISWebVirtualDirCollection WebVirtualDirs ;
        /**//// <summary>
        /// 网站说明
        /// </summary>
        public string ServerComment = "Way";
        /**//// <summary>
        /// 脚本支持
        /// </summary>
        public bool AccessScript = true;
        /**//// <summary>
        /// 读取
        /// </summary>
        public bool AccessRead = true;
        /**//// <summary>
        /// 物理路径
        /// </summary>
        public string Path = "c:\";
        /**//// <summary>
        /// 端口
        /// </summary>
        public int Port = 80;
        /**//// <summary>
        /// 目录浏览
        /// </summary>
        public bool EnableDirBrowsing = false;
        /**//// <summary>
        /// 默认文档
        /// </summary>
        public string DefaultDoc = "index.aspx";
        /**//// <summary>
        /// 使用默认文档
        /// </summary>
        public bool EnableDefaultDoc =true;
  /**//// <summary>
        /// IISWebServer的状态
        /// </summary>
        public IISServerState ServerState
        {
            get
            {
                DirectoryEntry server = IISManagement.returnIISWebserver(this.index);
                if( server == null )
                    throw(new Exception("找不到此IISWebServer"));
                switch (server.Properties["ServerState"][0].ToString())
                {
                    case "2":
                        return IISServerState.Started;
                    case "4":
                        return IISServerState.Stopped;
                    case "6":
                        return IISServerState.Paused;
                }
                return IISServerState.Stopped;
            }
        }
  /**//// <summary>
        /// 停止IISWebServer
        /// </summary>
        public void Stop()
        {
            DirectoryEntry Server;
            if( index == -1 )
                throw(new Exception("在IIS找不到此IISWebServer!"));
            try
            {
                Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
                if( Server != null )
                    Server.Invoke("stop" , new object[0]);
                else
                    throw(new Exception("在IIS找不到此IISWebServer!"));
            }
            catch
            {
                throw(new Exception("在IIS找不到此IISWebServer!"));
            }
        }
  /**//// <summary>
        /// 把基本信息的更改更新到IIS
        /// </summary>
        public void CommitChanges()
        {
            IISManagement.EditIISWebServer(this);
        }
  /**//// <summary>
        /// 启动IISWebServer
        /// </summary>
        public void Start()
        {
            if( index == -1 )
                throw(new Exception("在IIS找不到此IISWebServer!"));
            
            DirectoryEntry Service = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC");
            DirectoryEntry Server;
            IEnumerator ie = Service.Children.GetEnumerator();
  while(ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if( Server.SchemaClassName == "IIsWebServer" )   
                {
                    if( Server.Properties["Serverbindings"][0].ToString() == ":" + this.Port + ":" )   
                    {
                        Server.Invoke("stop",new object[0]);
                    }
                }
            }
  try
            {
                Server = new DirectoryEntry("IIS://" + IISManagement.Machinename + "/W3SVC/" + index);
                if( Server != null )
                    Server.Invoke("start" , new object[0]);
                else
                    throw(new Exception("在IIS找不到此IISWebServer!"));
            }
            catch
            {
                throw(new Exception("在IIS找不到此IISWebServer!"));
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        public IISWebServer()
        {
            WebVirtualDirs = new IISWebVirtualDirCollection(this);
        }
/**////////////////////////////////////////////
    }
           /**//// <summary>
    ///
    /// </summary>
    public class IISWebVirtualDirCollection:CollectionBase
    {
        /**//// <summary>
        ///
        /// </summary>
        public IISWebServer Parent = null;
  /**//// <summary>
        ///
        /// </summary>
        public IISWebVirtualDir this[int Index]
        {
            get
            {
                return (IISWebVirtualDir)this.List[Index];
               
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        public IISWebVirtualDir this[string Name]
        {
            get
            {
                Name = Name.ToLower();
                IISWebVirtualDir list;
                for(int i = 0 ; i < this.List.Count ; i++)
                {
                    list = (IISWebVirtualDir)this.List;
                    if(list.Name.ToLower() == Name)
                        return list;
                }
                return null;
            }
        }
  
        internal void Add_(IISWebVirtualDir WebVirtualDir)
        {
            try
            {
                this.List.Add(WebVirtualDir);
            }
            catch
            {
                throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
            }
            
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebVirtualDir"></param>
        public void Add(IISWebVirtualDir WebVirtualDir)
        {
            WebVirtualDir.Parent = this.Parent;
            try
            {
                this.List.Add(WebVirtualDir);
               
            }
            catch
            {
                throw(new Exception("发生意外错误,可能是某节点将该节点的上级节点作为它自己的子级插入"));
            }
            IISManagement.CreateIISWebVirtualDir(WebVirtualDir , true);
            
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebVirtualDirs"></param>
        public void AddRange(IISWebVirtualDir [] WebVirtualDirs)
        {
            for(int i = 0 ; i <= WebVirtualDirs.GetUpperBound(0) ; i++)
            {
                Add(WebVirtualDirs);
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebVirtualDir"></param>
        public void Remove(IISWebVirtualDir WebVirtualDir)
        {
            for(int i=0;i<this.List.Count;i++)
            {
                if((IISWebVirtualDir)this.List == WebVirtualDir)
                {
                    this.List.RemoveAt(i);
                    IISManagement.RemoveIISWebVirtualDir(WebVirtualDir);
                    return;
                }
            }
        }
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="Parent"></param>
        public IISWebVirtualDirCollection(IISWebServer Parent)
        {
            this.Parent = Parent;
        }
    }
  
    /**////////////////
    /// <summary>
    ///
    /// </summary>
    public class IISWebVirtualDir
    {
        /**//// <summary>
        ///
        /// </summary>
        public IISWebServer Parent = null;
        /**//// <summary>
        /// 虚拟目录名称
        /// </summary>
        public string Name = "Way";
        /**//// <summary>
        /// 读取
        /// </summary>
        public bool AccessRead = true;
        /**//// <summary>
        /// 脚本支持
        /// </summary>
        public bool AccessScript = true;
        /**//// <summary>
        /// 物理路径
        /// </summary>
        public string Path = "c:\";
        /**//// <summary>
        /// 默认文档
        /// </summary>
        public string DefaultDoc = "index.aspx";
        /**//// <summary>
        /// 使用默认文档
        /// </summary>
        public bool EnableDefaultDoc =true;
        /**//// <summary>
        /// 所属的网站的网站说明
        /// </summary>
        public string WebServer = "";
  /**//// <summary>
        ///
        /// </summary>
        /// <param name="WebServerName"></param>
        public IISWebVirtualDir(string WebServerName)
        {
            if( WebServerName.ToString() == "" )
                throw(new Exception("WebServerName不能为空!"));
            this.WebServer = WebServerName;
        }
        /**//// <summary>
        ///
        /// </summary>
        public IISWebVirtualDir()
        {
  }
    }
}
  
  
  以下是一个调用例子
//添加新站点
IISManagement iisMan = new IISManagement("localhost");
IISWebServer IISserver;
IISserver = new IISWebServer();
IISserver.ServerComment = "我的站点";
IISserver.Path = "d:\webSites\test";
IISserver.EnableDefaultDoc = true;
IISserver.DefaultDoc = "myIndex.aspx";
iisMan.WebServers.Add(IISserver);
  //添加虚拟目录
IISWebVirtualDir virDir_ = new IISWebVirtualDir();
virDir_.Path = "d:\mytest";
virDir_.Name = "新的虚拟目录名称";
virDir_.DefaultDoc = "default.aspx";
IISserver.WebVirtualDirs.Add(virDir_);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99242-1-1.html 上篇帖子: Silverlight发布到IIS上需要特别注意的地方 下篇帖子: Creating portable ASP.NET applications that work on IIS 6.0, IIS 7.0 Classic, an
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表