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

一个IIS管理类

2011年03月31日 ⁄ 综合 ⁄ 共 4784字 ⁄ 字号 评论关闭

using System;

using System.Data;

using System.DirectoryServices;

using System.Collections;

 

namespace TestUrlRe

{

     /// <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

                   {

                       //加入到ROOTChildren集合中去

                       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))

              {

抱歉!评论已关闭.