知识大全 .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的层次结构 为了搞清楚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) rootfolder CommitChanges() cha138/Article/program/net/201311/13547相关参考
Delphi中用Adsi创建IIS虚拟目录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 先引入类
用DELPHI写注册表实现建立IIS虚拟目录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近
知识大全 IIS下多站点利用虚拟目录 访问共用(图片)文件夹
IIS下多站点利用虚拟目录访问共用(图片)文件夹 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET开发宝典:配置Web服务器(IIS)虚拟站点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
.Net虚拟框架的实现原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Net虚拟框架的实现原
解读.Net虚拟框架的实现原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在让Net程序脱离
知识大全 asp.net中利用ashx实现图片防盗链的原理分析
直接分析盗链原理看下面用watch截获的发送的数据GET/Imgashx?img=svn_workgifHTTP/Accept:*/*Referer:AcceptLanguage:zhcnUACPU:
首先你的虚拟主机要能支持绑定多个域名cha138/Article/program/net/201311/13726
知识大全 比较IIS5、IIS6、IIS7的ASP.net请求处理过程
比较IIS5、IIS6、IIS7的ASP.net请求处理过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
使用JS创建虚拟目录,并引导进入浏览 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用JS可以替代