Web虚拟目录:Asp.net实现IIS控制管理


(一)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(th 本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3