日期:2009-05-17 浏览次数:20645 次
///*********************************************************** 
///************** IIS控制管理类 1.0 Beta 
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"; //表示操作的是虚拟目录 
<