54SA.COM|专注于系统运维管理,为中国SA提供动力!

54SA.COM|系统运维网

系统管理员之家Banner
当前位置: 主页 > Windows > 服务器 > WEB >

IIS控制管理(Web虚拟目录创建管理)

分享到:
时间:2010-10-28 21:29来源:网络 作者:Matin

  string sServer = "localhost";
  string VirtualDir = "Bug2004"; \虚拟目录
  string PathDir = @"D:myWebDirTestBug2000" \物理目录
  
  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
  {
  ///
  /// IISManager 的摘要说明。
  ///

  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;
  }
  ///
  /// 定义公共属性
  ///

  
  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;}
  }
  ///
  ///定义公共方法
  ///

  
  //连接服务器
  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);
  }
   
  ///
  ///私有方法
  ///

  
  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["AnonymousUs

[责任编辑:Lavy]

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名:
最新评论 进入详细评论页>>