现在的位置: 首页 > 综合 > 正文

刀兄写的IIS管理类(C#)

2013年01月04日 ⁄ 综合 ⁄ 共 4481字 ⁄ 字号 评论关闭

///***********************************************************  

  ///************** IIS控制管理类 1.0 Beta **************  

  ///************** Author: 飞刀 **************  

  ///************** http://www.aspcn.com **************  

  ///************** feidao@aspcn.com **************  

  ///***********************************************************  

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"; //表示操作的是虚拟目录  

             

抱歉!评论已关闭.