当前位置:web 服务器 > IIS >>

.Net中如何操作IIS(源代码) 及iis的属性

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

//连接服务器
private void ConnectToServer()
{
    string strPath = "IIS://" + _server + "/W3SVC/" + _website +"/ROOT";
    try
    {
        this.rootfolder = new DirectoryEntry(strPath);
        _virdirs = GetVirDirs(this.rootfolder.Children);
    }
    catch(Exception e)
    {
        throw new Exception("Can't connect to the server ["+ _server +"] ...",e);
    }
}
//执行批量更新
private void BatchUpdate(VirtualDirectories vds)
{
    _batchflag = true;
    foreach(object item in vds.Values)
    {
        VirtualDirectory vd = (VirtualDirectory)item;
        switch(vd.flag)
        {
            case 0:
     &nb

补充:Web开发 , ASP.Net ,
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,