知识大全 .Net中如何操作IIS的原理分析

Posted 目录

篇首语:智慧源于勤奋,伟大出自平凡。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .Net中如何操作IIS的原理分析相关的知识,希望对你有一定的参考价值。

.Net中如何操作IIS的原理分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   Net 中实际上已经为我们在这方面做得很好了 FCL中提供了不少的类来帮助我们完成这项工作 让我们的开发工作变非常简单和快乐 编程控制IIS实际上很简单 和ASP一样 Net中需要使用ADSI来操作IIS 但是此时我们不再需要GetObject这个东东了 因为 Net为我们提供了更加强大功能的新东东

  System DirectoryServices命名空间中包括了些强大的东东 DirectoryEntry DirectoryEntries 它们为我们提供了访问活动目录的强大功能 在这些类允许我们操作IIS LDAP NDS以及WinNT 功能很强大的吧

  不过我们此处只谈IIS的控制 一般来说 我们操作IIS一般都是对虚拟目录的操作 因此我将此列为主要的内容来讲

  首先我们要搞清楚IIS的层次结构的问题 下面是我从国外找来的一张图 很好的解释了IIS的层次结构

[China:Image id=Image ][/China:Image]

  为了搞清楚IIS的控制语法 我们就必须搞清上图 了解IIS元数据(Metabase)的层次结构 图中的每一个节点称之Key 而每个Key可以包含一个或多个值 这些值就是我们说的属性 (properties) IIS元数据中的Key与IIS中的元素是相符的 因此元数据中的属性值的设定是会影响IIS中的设置 这就是我们编程的基本思路和核心

  另外还要了解一下Schema这个概念 它表示IIS中构架的名称 即可以理解IIS元数据中Key的类型 具体点说就是指每个结点的类型 我们知道 IIS中有虚拟目录 普通目录 以及文件这些东东 而这些都属于IIS的元素 区分的他们的标帜就是Schema 比如虚拟目录的Schema就是 IIsVirtualDir 普通目录就是 IIsWebDir 这样我们添加 删除目录时 IIS就知道我们添加的是虚拟目录还是普通目录

  创建虚拟目录

  DirectoryEntry是 Net给我们的一大礼物 他的名字我们就知道他的功能 目录入口 使用过ADSI的人都知道操作IIS WinNT这些时 我们还需要提供他们的Path 操作IIS时 这个Path的格式为

IIS://ComputerName/Service/Website/Directory

  ComputerName 即操作的服务器的名字 可以是名字也可以是IP 经常用的就是localhost

  Service 即操作的服务器 IIS中有Web 也有FTP 还有SMTP这些服务 我们主要是操作IIS的Web功能 因此此处就是 W SVC 如果是FTP则应是 MSFTPSVC

  WebSite:一个IIS服务中可以包括很多的站点 这个就用于设置操作的站点 他的值是一个数字 默认是 表示缺省站点 如果有其它 则从 开始依次类推

  Directory 不用说 即操作的目录名称 一个站点一般顶层目录为 ROOT 其它目录则是他的孩子(Child)

  首先我们获取一个站点的顶层目录(根目录):

DirectoryEntry rootfolder = new DirectoryEntry( IIS://localhost/W SVC/ /ROOT );

  如果我们创建这个对象是没有发生异常 则表示这个目录是真实存在的

  下面我们来添加新的虚拟目录 比如我们要加的是 Aspcn

DirectoryEntry newVirDir = rootfolder Children Add( Aspcn IIsWebVirtualDir ); newVirDir Invoke( AppCreate true);newVirDir CommitChanges();rootfolder CommitChanges();

  创建目录的思路很简单 即在根目录的子集(rootfolder Children)中再添加一条记录 这里使用的是 DirectoryEntries类中的Add方法 它返回的是一个DirectoryEntry 表示新加入的目录 第一个参数是虚拟目录的名字 第二个则是Schema的类名以表明我们加入的目录类型 然后再使用DirectoryEntry的Invoke方法 调用ADSI中的 AppCreate 方法将目录真正创建(似乎不走这一步也可以创建目录成功 但是为了保险起见 大家还是用吧) 最后便是依次调用新 根目录的 CommitChanges方法 确认此次操作

  在创建新目录时 我们也可以同时给这个目录的属性赋值 但是我的实战经验告诉我 最好不要这样做 如果创建时就赋值 将有很多属性不能赋值成功 比如重要的表示真实目录的Path属性 因此飞刀建议大家最好是先创建目录 然后再赋值 即更新目录信息

  更新虚拟目录

  相信大家对IIS都比较熟悉 了解IIS中一些重要的设置 如可读(AccessRead) 可写(AccessWrite) 可执行(AccessExecute)等 这些都可通过对DirectoryEntry的Properties属性集合的赋值来实现 赋值可以通过两种方式来完成

  第一种是调用Properties集合的Add方法 如

dir Properties[ AccessRead ] Add(true);

  第二种是对第一个索引值赋值

dir Properties[ AccessRead ][ ] = true;

  这两种方法都是可行的 具体是要看你的喜好了

  在进行赋值之前我们还是要确定要要赋值的目标吧 )这里我们使用DirectoryEntries类的Find方法 如

DirectoryEntry de = rootfolder Children Find( Aspcn IIsVirtualDir );

  找到了 我们就可以赋值了 赋值时一定要好好看看啊 虚拟目录的属性值可以超多 一查一大堆 (太多了 飞刀我也不重复了 大家去微软的站点上查 )

  比较常用的有:AccessRead AccessWrite AccessExecute AccessScript DefaultDoc EnableDefaultDoc Path

  删除虚拟目录

  删除虚拟目录的方法也很简单 就是找到你要删除的虚拟目录 然后调用AppDelete方法

DirectoryEntry de = rootfolder Children Find( Aspcn IIsVirtualDir ); de Invoke( AppDelete true);rootfolder CommitChanges();

  还有一种方法 就是调用Root目录的Delete方法

object[] paras = new object[ ];

 paras[ ] = IIsWebVirtualDir ; //表示操作的是虚拟目录

paras[ ] = Aspcn ;rootfolder Invoke( Delete paras);

cha138/Article/program/net/201311/15427

相关参考

知识大全 asp.net中利用ashx实现图片防盗链的原理分析

直接分析盗链原理看下面用watch截获的发送的数据GET/Imgashx?img=svn_workgifHTTP/Accept:*/*Referer:AcceptLanguage:zhcnUACPU:

知识大全 比较IIS5、IIS6、IIS7的ASP.net请求处理过程

比较IIS5、IIS6、IIS7的ASP.net请求处理过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET的IIS5与IIS6.0

ASP.NET的IIS5与IIS6.0  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自从有了与

知识大全 IIS处理Asp.net请求和 Asp.net页面生命周期

IIS处理Asp.net请求和Asp.net页面生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 IIS 6.0与ASP.NET

ASP.NETMVC4框架揭秘:IIS6.0与ASP.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 .NET注册IIS的另一种方法

.NET注册IIS的另一种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 IIS 7.0与ASP.NET(1)

ASP.NETMVC4框架:IIS7.0与ASP.NET(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 IIS 7.0与ASP.NET(2)

ASP.NETMVC4框架:IIS7.0与ASP.NET(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 IIS 5.x与ASP.NET

ASP.NETMVC4框架揭秘:IIS5.x与ASP.NET  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 再谈IIS与ASP.NET管道的理解

再谈IIS与ASP.NET管道的理解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在年月份我曾