zoukankan      html  css  js  c++  java
  • Asp.net操作IIS(调试通过)

    本程序调用刀兄写的IIS管理类(C#),完成虚拟目录的添加删除判断虚拟目录是否存在
    刀兄写的IIS管理类(C#)代码:
    ///***********************************************************  

      ///************** IIS控制管理类 1.0 Beta **************  

      ///************** Author: 飞刀 **************  

      ///************** http://www.aspcn.com/ **************  

      ///************** feidao@aspcn.com **************  

      ///***********************************************************  

    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:  

                                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];  

             }  

         }  

    }

    代码调用:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    namespace webconfig
    {
     /// <summary>
     /// IISmodify 的摘要说明。
     /// </summary>
     public class IISmodify : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.TextBox mulu;
      protected System.Web.UI.WebControls.Button jiance;
      protected System.Web.UI.WebControls.Button add;
      protected System.Web.UI.WebControls.TextBox path;
      protected System.Web.UI.WebControls.Button huode;
      protected System.Web.UI.WebControls.Button gengxin;
      protected System.Web.UI.WebControls.Button delete;
      public IISManager iis;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       iis=new IISManager();
       Response.Write(iis.Server.ToString()+"<br>");//获得访问机器的名字或

    IP地址
       Response.Write(iis.WebSite.ToString()+"<br>");
       //Response.Write(iis.VirDirs.ToString()+"<br>");//虚拟目录的名字
       iis.Connect();
      }

      #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
     
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {   
       this.add.Click += new System.EventHandler(this.add_Click);
       this.jiance.Click += new System.EventHandler(this.jiance_Click);
       this.huode.Click += new System.EventHandler(this.huode_Click);
       this.gengxin.Click += new System.EventHandler(this.gengxin_Click);
       this.delete.Click += new System.EventHandler(this.delete_Click);
       this.Load += new System.EventHandler(this.Page_Load);

      }
      #endregion

      private void jiance_Click(object sender, System.EventArgs e)
      {//检测是否存这个虚拟目录
       if(mulu.Text!=""){
        if (iis.Exists(mulu.Text.ToString())==true)
        {
         Response.Write("<script>alert('此虚拟目录已存在')

    </script>");
        }
        else{
         Response.Write("<script>alert('此虚拟目录不存在')

    </script>");
        }
        }
     
     }

      private void add_Click(object sender, System.EventArgs e)
      {//添加一个虚拟目录
       if(mulu.Text!=""){
        if(iis.Exists(mulu.Text.ToString())==true){
        Response.Write("<script>alert('此虚拟目录已存在')

    </script>");
           return;
        }
        VirtualDirectory vd=new VirtualDirectory();//声明

    VirtualDirectory
        vd.Name=mulu.Text.ToString();//设置虚拟目录名字
        vd.Path=path.Text;//设置虚拟目录路径默认为C:///当虚拟目录路

    径不存在的时候同样可以建立虚拟目录
        if(Directory.Exists(path.Text.ToString())==false){//如果目录

    不存在则创建目录
         Directory.CreateDirectory(path.Text.ToString());
         Response.Write("<script>alert('虚拟目录路径创建成

    功')</script>");
        }
        try
        {
         iis.Create(vd);
         Response.Write("<script>alert('虚拟目录创建成功')

    </script>");
        }
        catch{
        Response.Write("<script>alert('虚拟目录创建失败')

    </script>");
        }
       }
      }

      private void huode_Click(object sender, System.EventArgs e)
      {//得到一个虚拟目录
       if (mulu.Text!=""){
        iis.GetVirDir(mulu.Text.ToString());
       }
     
      }

      private void gengxin_Click(object sender, System.EventArgs e)
      {//更新一个虚拟目录
       if (mulu.Text!="")
       {
        VirtualDirectory vd=new VirtualDirectory();//声明

    VirtualDirectory
        vd.Name=mulu.Text.ToString();//设置虚拟目录名字
        try
        {
         iis.Update(vd);
         Response.Write("<script>alert('虚拟目录更新成功')

    </script>");
        }
        catch{
        Response.Write("<script>alert('虚拟目录更新失败')

    </script>");
        }
       }
      }

      private void delete_Click(object sender, System.EventArgs e)
      {//删除虚拟目录
       if(mulu.Text!=""){
        try
        {
         iis.Delete(mulu.Text.ToString());
         Response.Write("<script>alert('虚拟目录删除成功')

    </script>");
        }
        catch{
        Response.Write("<script>alert('虚拟目录删除失败')

    </script>");
        }
       }
      }
     }
    }

  • 相关阅读:
    ORACLE错误笔记
    SQL-考试各科目的成绩以及各科目的参与考试次数
    MySql有几条更新sql不能执行时的解决方案
    面试中常遇到的算法面试题
    MySql绿色版安装教程
    Javaweb
    关于JavaWeb不使用框架上传文件的简单实现
    SSM框架
    数据库
    J2SE
  • 原文地址:https://www.cnblogs.com/wujy/p/2188385.html
Copyright © 2011-2022 走看看