日期:2011-12-18  浏览次数:20425 次

.Net中如何操作IIS(源代码) (原创)
作者: 飞刀.Net        人气: 2398///***********************************************************
///************** IIS控制管理类 1.0 Beta **************
///************** Author: 飞刀 **************
///************** http://www.aspcn.com **************
///************** feidao@aspcn.com **************
///************** 2002.05.25 世界杯前6 天 **************
///***********************************************************
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();