RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
Asp.net实现IIS控制管理---Web虚拟目录的创建及管理
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 11:02
  • 来源:未知

(一)CreateWebDir.cs 使用示例       string sServer = "localhost";       string VirtualDir = "Bug2004";                   //虚拟目录       string PathDir    = @"D:/myWebDirTest/Bug2000"   //物理目录    IISManager iisMg = new IISManager(sServer);    iisMg.Connect();        if (iisMg.Exists(VirtualDir]))    {     Console.Write(VirtualDir+ " is exist!");    }    else    {     myINI.IniWriteValue("WebDir","WebDirExist","false");     iisMg.get_AnonymousUser();     string[] anonymousUser = new string[2];     anonymousUser[0] = iisMg.AnonymousUserName ;     anonymousUser[1] = iisMg.AnonymousUserPass ;     VirtualDirectory newVirDir = new VirtualDirectory(VirtualDir,PathDir,anonymousUser);     if (iisMg.Create(newVirDir))      Console.Write(VirtualDir+ " 创建成功!");     else      Console.Write(VirtualDir+ " 创建不成功!");    }    iisMg.Close(); (二)CreateWebDir.cs 是转贴过来的,我作了些完善和修改 ///*********************************************************** ///**************                IIS控制管理类                ************** ///************** 转贴自: 飞刀 http://www.aspcn.com ************* ///*********************************************************** using System; using System.Data; using System.DirectoryServices; using System.Collections; namespace CreateWebDir { /// <summary> /// IISManager 的摘要说明。 /// </summary> public class IISManager {   //定义需要使用的   private string _server,_website,_AnonymousUserPass,_AnonymousUserName;   private VirtualDirectories _virdirs;   protected System.DirectoryServices.DirectoryEntry rootfolder;   private bool _batchflag;   public IISManager()   {    //默认情况下使用localhost,即访问本地机    _server = "localhost";    _website = "1";    _batchflag = false;   }   public IISManager(string strServer)   {    _server = strServer;    _website = "1";    _batchflag = false;   }   /// <summary>   /// 定义公共属性   /// </summary>   public void get_AnonymousUser()   {    _AnonymousUserPass="IUSR_DEVE-SERVER";    _AnonymousUserName="IUSR_DEVE-SERVER";    VirtualDirectory vDir;    try    {     Hashtable myList = (Hashtable)_virdirs;     IDictionaryEnumerator myEnumerator = myList.GetEnumerator();     while ( myEnumerator.MoveNext() )     {      vDir = (VirtualDirectory)myEnumerator.Value;      if (vDir.AnonymousUserName!="" && vDir.AnonymousUserPass != "")      {       _AnonymousUserName=vDir.AnonymousUserName;       _AnonymousUserPass=vDir.AnonymousUserPass;       break;      }     }    }    catch    {     _AnonymousUserPass="IUSR_DEVE-SERVER";     _AnonymousUserName="IUSR_DEVE-SERVER";    }   }   public string AnonymousUserName   {    get{ return _AnonymousUserName;}    set{ _AnonymousUserName = value;}   }   public string AnonymousUserPass   {    get{ return _AnonymousUserPass;}    set{ _AnonymousUserPass = value;}   }   //Server属性定义访问机器的名字,可以是IP与计算名   public string Server   {    get{ return _server;}    set{ _server = value;}   }   //WebSite属性定义,为一数字,为方便,使用string   //一般来说第一台主机为1,第二台主机为2,依次类推   public string WebSite   {    get{ return _website; }    set{ _website = value; }   }   //虚拟目录的名字   public VirtualDirectories VirDirs   {    get{ return _virdirs; }    set{ _virdirs = value;}   }   ///<summary>   ///定义公共方法   ///</summary>   //连接服务器   public void Connect()   {    ConnectToServer();   }   //为方便重载   public void Connect(string strServer)   {    _server = strServer;    ConnectToServer();   }   //为方便重载   public void Connect(string strServer,string strWebSite)   {    _server = strServer;    _website = strWebSite;    ConnectToServer();   }   //判断是否存这个虚拟目录   public bool Exists(string strVirdir)   {    return _virdirs.Contains(strVirdir);   }   //添加一个虚拟目录   public bool Create(VirtualDirectory newdir)   {    string strPath = "IIS://" + _server + "/W3SVC/" + _website + "/ROOT/" + newdir.Name;    if(!_virdirs.Contains(newdir.Name) || _batchflag )    {     try     {      //加入到ROOT的Children集合中去      DirectoryEntry newVirDir = rootfolder.Children.Add(newdir.Name,"IIsWebVirtualDir");      newVirDir.Invoke("AppCreate",true);      newVirDir.CommitChanges();      rootfolder.CommitChanges();      //然后更新数据      UpdateDirInfo(newVirDir,newdir);      return true;     }     catch(Exception ee)     {      //throw new Exception(ee.ToString());      return false;     }    }    else    {     return true;     //throw new Exception("This virtual directory is already exist.");    }   }   //得到一个虚拟目录   public VirtualDirectory GetVirDir(string strVirdir)   {    VirtualDirectory tmp = null;    if(_virdirs.Contains(strVirdir))    {     tmp = _virdirs.Find(strVirdir);     ((VirtualDirectory)_virdirs[strVirdir]).flag = 2;    }    else    {     //throw new Exception("This virtual directory is not exists");    }    return tmp;   }   //更新一个虚拟目录   public void Update(VirtualDirectory dir)   {    //判断需要更改的虚拟目录是否存在    if(_virdirs.Contains(dir.Name))    {     DirectoryEntry ode = rootfolder.Children.Find(dir.Name,"IIsWebVirtualDir");     UpdateDirInfo(ode,dir);    }    else    {     //throw new Exception("This virtual directory is not exists.");    }   }     //删除一个虚拟目录   public void Delete(string strVirdir)   {    if(_virdirs.Contains(strVirdir))    {     object[] paras = new object[2];     paras[0] = "IIsWebVirtualDir"; //表示操作的是虚拟目录     paras[1] = strVirdir;     rootfolder.Invoke("Delete",paras);     rootfolder.CommitChanges();    }    else    {     //throw new Exception("Can''t delete " + strVirdir + ",because it isn''t exists.");    }   }   //批量更新   public void UpdateBatch()   {    BatchUpdate(_virdirs);   }   //重载一个:-)   public void UpdateBatch(VirtualDirectories vds)   {    BatchUpdate(vds);   }     ///<summary>   ///私有方法   ///</summary>   public void Close()   {    _virdirs.Clear();    _virdirs = null;    rootfolder.Dispose();   }   //连接服务器   private void ConnectToServer()   {    string strPath = "IIS://" + _server + "/W3SVC/" + _website +"/ROOT";    try    {     this.rootfolder = new DirectoryEntry(strPath);     _virdirs = GetVirDirs(this.rootfolder.Children);    }    catch(Exception e)    {     //throw new Exception("Can''t connect to the server ["+ _server +"] ...",e);    }   }   //执行批量更新   private void BatchUpdate(VirtualDirectories vds)   {    _batchflag = true;    foreach(object item in vds.Values)    {     VirtualDirectory vd = (VirtualDirectory)item;     switch(vd.flag)     {      case 0:       break;      case 1:       Create(vd);       break;      case 2:       Update(vd);       break;     }    }    _batchflag = false;   }   //更新东东   private void UpdateDirInfo(DirectoryEntry de,VirtualDirectory vd)   {    de.Properties["AnonymousUserName"][0] = vd.AnonymousUserName;    de.Properties["AnonymousUserPass"][0] = vd.AnonymousUserPass;    de.Properties["AccessRead"][0] = vd.AccessRead;    de.Properties["AccessExecute"][0] = vd.AccessExecute;    de.Properties["AccessWrite"][0] = vd.AccessWrite;    de.Properties["AuthBasic"][0] = vd.AuthBasic;    de.Properties["AuthNTLM"][0] = vd.AuthNTLM;    de.Properties["ContentIndexed"][0] = vd.ContentIndexed;    de.Properties["EnableDefaultDoc"][0] = vd.EnableDefaultDoc;    de.Properties["EnableDirBrowsing"][0] = vd.EnableDirBrowsing;    de.Properties["AccessSSL"][0] = vd.AccessSSL;    de.Properties["Accessscript"][0] = vd.Accessscript;    de.Properties["DefaultDoc"][0] = vd.DefaultDoc;    de.Properties["Path"][0] = vd.Path;    de.CommitChanges();   }   //获取虚拟目录集合   private VirtualDirectories GetVirDirs(DirectoryEntries des)   {    VirtualDirectories tmpdirs = new VirtualDirectories();    foreach(DirectoryEntry de in des)    {     if(de.SchemaClassName == "IIsWebVirtualDir")     {      VirtualDirectory vd = new VirtualDirectory();      vd.Name = de.Name;      vd.AccessRead = (bool)de.Properties["AccessRead"][0];      vd.AccessExecute = (bool)de.Properties["AccessExecute"][0];      vd.AccessWrite = (bool)de.Properties["AccessWrite"][0];      vd.AnonymousUserName = (string)de.Properties["AnonymousUserName"][0];      vd.AnonymousUserPass = (string)de.Properties["AnonymousUserName"][0];      vd.AuthBasic = (bool)de.Properties["AuthBasic"][0];      vd.AuthNTLM = (bool)de.Properties["AuthNTLM"][0];      vd.ContentIndexed = (bool)de.Properties["ContentIndexed"][0];      vd.EnableDefaultDoc = (bool)de.Properties["EnableDefaultDoc"][0];      vd.EnableDirBrowsing = (bool)de.Properties["EnableDirBrowsing"][0];      vd.AccessSSL = (bool)de.Properties["AccessSSL"][0];      vd.Accessscript = (bool)de.Properties["Accessscript"][0];      vd.Path = (string)de.Properties["Path"][0];      vd.flag = 0;      vd.DefaultDoc = (string)de.Properties["DefaultDoc"][0];      tmpdirs.Add(vd.Name,vd);     }    }    return tmpdirs;   } } /// <summary> /// VirtualDirectory类 /// </summary> public class VirtualDirectory {   private bool _read,_execute,_script,_ssl,_write,_authbasic,_authntlm, _indexed,_endirbrow,_endefaultdoc;   private string _ausername,_auserpass,_name,_path;   private int _flag;   private string _defaultdoc;   /// <summary>   /// 构造函数   /// </summary>   public VirtualDirectory()   {    SetValue();   }   public VirtualDirectory(string sVirDirName)   {    SetValue();    _name = sVirDirName;   }   // sVirDirName:虚拟路径;   // strPhyPath: 物理路径( physics Path)   public VirtualDirectory(string sVirDirName,string strPhyPath,string[] AnonymousUser)   {    SetValue();    _name = sVirDirName;    _path = strPhyPath;    _ausername = AnonymousUser[0];    _auserpass = AnonymousUser[1];   }   private void SetValue()   {    _read = true;_execute = false;_script = true;_ssl= false;_write=false;_authbasic=false;    _authntlm=true;_indexed = true;_endirbrow=false;_endefaultdoc = true;    _flag = 1;    _defaultdoc = "default.htm,default.aspx,default.asp,index.htm";    _path = "C://";    _ausername = "IUSR_DEVE-SERVER";_auserpass ="IUSR_DEVE-SERVER";_name="";   }   ///<summary>   ///定义属性,IISVirtualDir太多属性了   ///我只搞了比较重要的一些,其它的大伙需要的自个加吧。   ///</summary>   public int flag   {    get{ return _flag;}    set{ _flag = value;}   }   public bool AccessRead   {    get{ return _read;}    set{ _read = value;}   }   public bool AccessWrite   {    get{ return _write;}    set{ _write = value;}   }   public bool AccessExecute   {    get{ return _execute;}    set{ _execute = value;}   }   public bool AccessSSL   {    get{ return _ssl;}    set{ _ssl = value;}   }   public bool Accessscript   {    get{ return _script;}    set{ _script = value;}   }   public bool AuthBasic   {    get{ return _authbasic;}    set{ _authbasic = value;}   }   public bool AuthNTLM   {    get{ return _authntlm;}    set{ _authntlm = value;}   }   public bool ContentIndexed   {    get{ return _indexed;}    set{ _indexed = value;}   }   public bool EnableDirBrowsing   {    get{ return _endirbrow;}    set{ _endirbrow = value;}   }   public bool EnableDefaultDoc   {    get{ return _endefaultdoc;}    set{ _endefaultdoc = value;}   }   public string Name   {    get{ return _name;}    set{ _name = value;}   }   public string Path   {    get{ return _path;}    set{ _path = value;}   }   public string DefaultDoc   {    get{ return _defaultdoc;}    set{ _defaultdoc = value;}   }   public string AnonymousUserName   {    get{ return _ausername;}    set{ _ausername = value;}   }   public string AnonymousUserPass   {    get{ return _auserpass;}    set{ _auserpass = value;}   } } /// <summary> /// 集合VirtualDirectories /// </summary> public class VirtualDirectories : System.Collections.Hashtable {   public VirtualDirectories()   {   }   //添加新的方法   public VirtualDirectory Find(string strName)   {    return (VirtualDirectory)this[strName];   } } }