欢迎光临
我们一直在努力

.Net中如何操作IIS(源代码) (原创)-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月
.net中如何操作iis(源代码) (原创)
作者.Net中如何操作IIS(源代码) (原创)-.NET教程,Asp.Net开发: 飞刀.net        人气.Net中如何操作IIS(源代码) (原创)-.NET教程,Asp.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();
            //然后更新数据
            
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("cant delete " + strvirdir + ",because it isnt 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("cant 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:
                break;
            case 1:
                create(vd);
                break;
            case 2:
                update(vd);
                break;
        }
    }
    _batchflag = false;
}
//更新东东
private void updatedirinfo(directoryentry de,virtualdirectory vd)
{
    de.properties["anonymoususername"][0] = vd.anonymoususername;
    de.properties["anonymoususerpass"][0] = vd.anonymoususerpass;
    de.properties["accessread"][0] = vd.accessread;
    de.properties["accessexecute"][0] = vd.accessexecute;
    de.properties["accesswrite"][0] = vd.accesswrite;
    de.properties["authbasic"][0] = vd.authbasic;
    de.properties["authntlm"][0] = vd.authntlm;
    de.properties["contentindexed"][0] = vd.contentindexed;
    de.properties["enabledefaultdoc"][0] = vd.enabledefaultdoc;
    de.properties["enabledirbrowsing"][0] = vd.enabledirbrowsing;
    de.properties["accessssl"][0] = vd.accessssl;
    de.properties["accessscript"][0] = vd.accessscript;
    de.properties["defaultdoc"][0] = vd.defaultdoc;
    de.properties["path"][0] = vd.path;
    de.commitchanges();
}

//获取虚拟目录集合
private virtualdirectories getvirdirs(directoryentries des)
{
    virtualdirectories tmpdirs = new virtualdirectories();
    foreach(directoryentry de in des)
    {
        if(de.schemaclassname == "iiswebvirtualdir")
        {
            virtualdirectory vd = new virtualdirectory();
            vd.name = de.name;
            vd.accessread = (bool)de.properties["accessread"][0];
            vd.accessexecute = (bool)de.properties["accessexecute"][0];
            vd.accesswrite = (bool)de.properties["accesswrite"][0];
            vd.anonymoususername = (string)de.properties["anonymoususername"][0];
            vd.anonymoususerpass = (string)de.properties["anonymoususername"][0];
            vd.authbasic = (bool)de.properties["authbasic"][0];
            vd.authntlm = (bool)de.properties["authntlm"][0];
            vd.contentindexed = (bool)de.properties["contentindexed"][0];
            vd.enabledefaultdoc = (bool)de.properties["enabledefaultdoc"][0];
            vd.enabledirbrowsing = (bool)de.properties["enabledirbrowsing"][0];
            vd.accessssl = (bool)de.properties["accessssl"][0];
            vd.accessscript = (bool)de.properties["accessscript"][0];
            vd.path = (string)de.properties["path"][0];
            vd.flag = 0;
            vd.defaultdoc = (string)de.properties["defaultdoc"][0];
            tmpdirs.add(vd.name,vd);
         }
    }
    return tmpdirs;
}

}
/// <summary>
/// virtualdirectory类
/// </summary>
public class virtualdirectory
{
    private bool _read,_execute,_script,_ssl,_write,_authbasic,_authntlm,_indexed,_endirbrow,_endefaultdoc;
    private string _ausername,_auserpass,_name,_path;
    private int _flag;
    private string _defaultdoc;
    /// <summary>
    ///
构造函数
    /// </summary>
    public virtualdirectory()
    {
        setvalue();
    }
    public virtualdirectory(string strvirdirname)
    {
        _name = strvirdirname;
        setvalue();
    }
    private void setvalue()
    {
        _read = true;_execute = false;_script = false;_ssl= false;_write=false;_authbasic=false;_authntlm=false;
        _indexed = false;_endirbrow=false;_endefaultdoc = false;
        _flag = 1;
        _defaultdoc = "default.htm,default.aspx,default.asp,index.htm";
        _path = "c:\\";
        _ausername = "";_auserpass ="";_name="";
    }
    ///<summary>
    ///
定义属性,iisvirtualdir太多属性了
    ///我只搞了比较重要的一些,其它的大伙需要的自个加吧。
    ///</summary>

    public int flag
    {
        get{ return _flag;}
        set{ _flag = value;}
    }
    public bool accessread
    {
        get{ return _read;}
        set{ _read = value;}
    }
    public bool accesswrite
    {
        get{ return _write;}
        set{ _write = value;}
    }
    public bool accessexecute
    {
        get{ return _execute;}
        set{ _execute = value;}
    }
    public bool accessssl
    {
        get{ return _ssl;}
        set{ _ssl = value;}
    }
    public bool accessscript
    {
        get{ return _script;}
        set{ _script = value;}
    }
    public bool authbasic
    {
        get{ return _authbasic;}
        set{ _authbasic = value;}
    }
    public bool authntlm
    {
        get{ return _authntlm;}
        set{ _authntlm = value;}
    }
    public bool contentindexed
    {
        get{ return _indexed;}
        set{ _indexed = value;}
    }
    public bool enabledirbrowsing
    {
        get{ return _endirbrow;}
        set{ _endirbrow = value;}
    }
    public bool enabledefaultdoc
    {
        get{ return _endefaultdoc;}
        set{ _endefaultdoc = value;}
    }
    public string name
    {
        get{ return _name;}
        set{ _name = value;}
    }
    public string path
    {
        get{ return _path;}
        set{ _path = value;}
    }
    public string defaultdoc
    {
        get{ return _defaultdoc;}
        set{ _defaultdoc = value;}
    }
    public string anonymoususername
    {
        get{ return _ausername;}
        set{ _ausername = value;}
    }
    public string anonymoususerpass
    {
        get{ return _auserpass;}
        set{ _auserpass = value;}
    }
}
/// <summary>
/// 集合virtualdirectories
/// </summary>

public class virtualdirectories : system.collections.hashtable
{
    public virtualdirectories()
    {
    }
    //添加新的方法
    public virtualdirectory find(string strname)
    {
        return (virtualdirectory)this[strname];
    }
}
}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » .Net中如何操作IIS(源代码) (原创)-.NET教程,Asp.Net开发
分享到: 更多 (0)

相关推荐

  • 暂无文章