欢迎光临
我们一直在努力

.Net中如何操作IIS(源代码)-.NET教程,.NET Framework

建站超值云服务器,限时71元/月

using system;
  using system.data;
  using system.directoryservices;
  using system.collections;
  namespace aspcn.management
  {
  /// <summary>
  /// iismanager 的摘要说明。
  /// </summary>
  public class iismanager
  {
  //定义需要使用的
  private string _server,_website;
  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>
  
  //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 void 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);
   }
   catch(exception ee)
   {
   throw new exception(ee.tostring());
   }
   }
   else
   {
   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(“cant delete ” + strvirdir + “,because it isnt exists.”);
   }
  }
  //批量更新
  public void updatebatch()
  {
   batchupdate(_virdirs);
  }
  //重载一个:-)
  public void updatebatch(virtualdirectories vds)
  {
   batchupdate(vds);
  }
   
  ///<summary>
  ///私有方法
  ///</summary>
  
  //连接服务器
  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(“cant 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 strvirdirname)
   {
   _name = strvirdirname;
   setvalue();
   }
   private void setvalue()
   {
   _read = true;_execute = false;_script = false;_ssl= false;_write=false;_authbasic=false;_authntlm=false;
   _indexed = false;_endirbrow=false;_endefaultdoc = false;
   _flag = 1;
   _defaultdoc = “default.htm,default.aspx,default.asp,index.htm”;
   _path = “c:\\”;
   _ausername = “”;_auserpass =””;_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];
   }
  }
  }

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » .Net中如何操作IIS(源代码)-.NET教程,.NET Framework
分享到: 更多 (0)

相关推荐

  • 暂无文章