全国统一热线:
028-86758058
18980748058
购买流程
付款方式
常见问题
在线提问
续租服务
购物车(
0
件)
用户名:
密 码:
记住
首 页
HOME
域名注册
DOMAIN
虚拟主机
WEB HOST
成品网站超市
AUTO Site
VPS主机
VPS SERVER
云 主 机
CLOUD HOST
租用托管
SERVER
海外主机
HK HOST
代理专区
AGENT
客服中心
SERVICE
站长教程
SERVICE
欢迎光临西部数据云计算中心,我们将竭诚为您提供最优质的服务!
中文域名
域名转入
域名转出
DNS管理
动态域名
获取域名证书
域名停放
域名过户
集群主机
双线主机
基本主机
港台主机
论坛主机
Linux主机
Vip合租主机
超G型主机
ASP.net主机
Java主机
智能建站主机
网店主机
美国主机
数据库
成品网站超市
智能建站主机
集群VPS主机
国内VPS主机
香港VPS主机
美国VPS主机
云主机介绍
云主机购买
服务器租用
主机托管
常见问题
香港主机
港台主机
美国主机
国内免备案
步骤流程
代理级别
代理合同
代理模式
代理优势
在线申请
产品列表
常见问题
代理商分布图
常见问题
有问必答
跟踪提问
购买流程
产品价格
付款方式
常用软件
网站备案
续租服务
汇款确认
相关文档
联系我们
域名资讯
主机资讯
行业动态
网页制作
php教程
mysql教程
域名资讯
云计算资讯
网络编程
您当前的位置:
首页
>
网络编程
>
Net教程
.Net中如何操作IIS的虚拟目录原理分析及实现方案
时间:2015-01-29 来源:互联网 作者:佚名
.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功能,因此此处就是“W3SVC”,如果是FTP则应是“MSFTPSVC”
WebSite:一个IIS服务中可以包括很多的站点,这个就用于设置操作的站点。他的值是一个数字,默认是1,表示缺省站点,如果有其它,则从1开始依次类推。
Directory:不用说,即操作的目录名称,一个站点一般顶层目录为“ROOT”,其它目录则是他的孩子(Child)。
首先我们获取一个站点的顶层目录(根目录)
:
复制代码
代码如下:
DirectoryEntry rootfolder = new DirectoryEntry(“IIS://localhost/W3SVC/1/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”][0] = 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[2];
paras[0] = “IIsWebVirtualDir”; //表示操作的是虚拟目录
paras[1] = “Aspcn”;
rootfolder.Invoke(“Delete”,paras);
rootfolder.CommitChanges();
来顶一下
返回首页
推荐资讯
WPF制作一个简单的倒计时器实例附源
实例一: 早上起来后闲的无事,于是想到前些日子学院的某个老
C# 递归函数详细介绍及使用方法
什么是递归函数/方法? 任何一个方法既可以调用其他方法也可
相关文章
在IIS上重新注册.NET Framework 2.0的命令和参数详解
IIS和.NET(1.1/2.0)的安装顺序及错误解决方法
使用visual studio自动创建IIS虚拟目录
IIS 浏览aspx页面出现无法显示XML页的解决方法分享
IIS7的应用程序池详细解析
.net重启iis线程池和iis站点程序代码分享
asp.net不用设置iis实现url重写 类似伪静态路由
asp.net无法获取iis目录的问题解决方法
解决iis7.5服务器上.net 获取不到https页面的信息
iis访问出现各种问题(Vs访问正常)的部分处理方法详细整
栏目更新
栏目热门
返回首页
关于我们
联系我们
付款方式
价格总览
资讯中心
友情链接
媒体关注
有问必答
投诉建议
网站备案
《中华人民共和国增值电信业务经营许可证》编号:川B2-20080058号
官方网址:
xibushuju.com
西部数据
Copyright © 2002~2015
天府快车
版权所有
电话总机:
028-86758058
(50线) 传真:
028-86758058