首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> ASP.NET >> 正文

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
【责编:admin】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·开源软件测试工具学习专题
 ·JSP Web开发 入门基础到高手进阶教程…
 ·JavaFX—是Java桌面的新希望么?
 ·安全至上 .NET开发安全策略…
 ·测试用例设计之道-测试用例学习专题
 ·面向Java开发人员的Scala指南
 ·Java设计模式之实例详解
 ·Oracle数据库11g 面向DBA和开发人员的重要新特性…
 ·桌面应用软件编程 J2SE技术详解…
 ·我“炫”我精彩-------WPF开发教程
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航