创建虚拟目录
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();
System.Object
System.DirectoryServices.DirectoryEntries
IIs创建虚拟目录
http://www.eggheadcafe.com/articles/20040112.asp
using System;
using System.DirectoryServices;
namespace IISMgrAddin
{
/// <summary>
/// Summary description for IISManager.
/// </summary>
public class IISManager
{
/// <summary>
/// Constructor
/// </summary>
/// <summary>
/// Default constructor uses localhost as default server
/// </summary>
public IISManager()
{
}
public string CreateVDir(string WebSite, string VDirName, string Path, bool RootDir,
bool chkRead,bool chkWrite, bool chkExecute, bool chkScript, bool chkAuth,
int webSiteNum, string serverName)
{
string sRet=String.Empty;
System.DirectoryServices.DirectoryEntry IISSchema;
System.DirectoryServices.DirectoryEntry IISAdmin;
System.DirectoryServices.DirectoryEntry VDir;
bool IISUnderNT;
//
// Determine version of IIS
//
IISSchema = new System.DirectoryServices.DirectoryEntry("IIS://" +serverName +
"/Schema/AppIsolated");
if (IISSchema.Properties["Syntax"].Value.ToString().ToUpper() == "BOOLEAN")
IISUnderNT = true;
else
IISUnderNT = false;
IISSchema.Dispose();
//
// Get the admin object
//
IISAdmin = new System.DirectoryServices.DirectoryEntry("IIS://" +serverName +
"/W3SVC/" + webSiteNum + "/Root");
//
// If we're not creating a root directory
//
if (!RootDir)
{
//
// If the virtual directory already exists then delete it
//
foreach(System.DirectoryServices.DirectoryEntry v in IISAdmin.Children)
{
if (v.Name == VDirName)
{
// Delete the specified virtual directory if it already exists
try
{
IISAdmin.Invoke("Delete", new string [] { v.SchemaClassName, VDirName });
IISAdmin.CommitChanges();
}
catch(Exception ex)
{
sRet+=ex.Message;
}
}
}
}
//
// Create the virtual directory
//
if (!RootDir)
{
VDir = IISAdmin.Children.Add(VDirName, "IIsWebVirtualDir");
}
else
{
VDir = IISAdmin;
}
//
// Setup the VDir
//
VDir.Properties["AccessRead"][0] = chkRead;
VDir.Properties["AccessExecute"][0] = chkExecute;
VDir.Properties["AccessWrite"][0] = chkWrite;
VDir.Properties["AccessScript"][0] = chkScript;
VDir.Properties["AuthNTLM"][0] = chkAuth;
VDir.Properties["EnableDefaultDoc"][0] = true;
VDir.Properties["EnableDirBrowsing"][0] = false;
VDir.Properties["DefaultDoc"][0] = true;
VDir.Properties["Path"][0] = Path;
//
// NT doesn't support this property
//
if (!IISUnderNT)
{
VDir.Properties["AspEnableParentPaths"][0] = true;
}
//
// Set the changes
//
VDir.CommitChanges();
//
// Make it a web application
//
if (IISUnderNT)
{
VDir.Invoke("AppCreate", false);
}
else
{
VDir.Invoke("AppCreate", 1);
}
sRet+= "VRoot " +VDirName + " created!";
return sRet;
}
#region Properties
public string ServerName
{
get
{
return _serverName;
}
set
{
_serverName = value;
}
}
#endregion
public static string VirDirSchemaName = "IIsWebVirtualDir";
#region Private Members
private string _serverName;
#endregion
}
}
分享到:
相关推荐
通过ASP.NET 2.0(C#)管理IIS站点。可以通过ASP.NET页面添加删除修改IIS站点,就像在IIS管理器当中单击属性一样。主要用于虚拟主机提供商的客户通过WEB管理自己的网站。 主要技术是用了ASP.NET的身份模拟技术,...
新升级版本依然贯彻asp程序员迅速掌握asp.Net的思路,但功能完善,完整的留言板功能都具备了,可以对照前一版本,相信可以更快的学通asp.Net。 程序名称: 深度学习(asp.Net)留言板 v0.1.0 软件类别: asp.Net源码...
ASP.NET对IIS中的虚拟目录进行操作.txt asp.net里导出excel表方法汇总.txt ASP.NET文件上传程序的源代码.txt Asp.Net中文本换行.txt ASPNET中实现在线用户检测(使用后台守护线程).txt C# 读取计算机CPU,HDD信息....
ASP.NET对IIS中的虚拟目录进行操作.txt asp.net里导出excel表方法汇总.txt ASP.NET文件上传程序的源代码.txt Asp.Net中文本换行.txt ASPNET中实现在线用户检测(使用后台守护线程).txt C# 读取计算机CPU,HDD信息....
本资源摘要信息涵盖了 ASP.NET 实用网站开发的各个方面,包括 .NET Framework、ASP.NET、Web 服务器、IIS、Visual Studio 2008、XHTML、CSS、JavaScript、C#、数据类型、类库、继承、枚举类型、数组等知识点。...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...
2,设置虚拟目录,控制面板-->管理工具-->IIS-->右击默认站点-->新建虚拟目录,名为XFJ 3,完成后,打开IE,敲入http://localhost/XFJ/default.aspx 即可访问 管理员登陆: 户名:xfj 密码:xfj
是直接关系到小区居民日常生活的系统,是近几年来楼市发展中必然出现的产物,它有力地缓解了小区物业在小区管理工作中,因为人员缺乏,以及资金紧张而带来的压力,实现统一化管理,使小区管理工作电子化,虚拟化,提高...
不错的车辆信息管理源码,下载后在IIS管理器中添加虚拟目录
本光盘包括 毕业论文,英文翻译...2.系统安装IIS后,在IIS里建立虚拟目录,路径指向TICKETS,配置用户权限,可以在IE里输入127.0.0.1/LOGIN.ASPX,可以执行。 3.系统的高级管理员用户名为:admin,密码为:admin @更多@ ...
因为教程偏重于代码编程,并且主旨在于“速成”,所以除了界面并无作任何美化之外,在代码解释上都尽可能做了中文注释,但是你可能还需要参考DW和C#等相关基础教程。注意:因为本教程节与节之间的关联性非常强,所以...
2.在IIS中新建站点,指向该文件夹,如果新建虚拟路径,会导致一些图片的不正常显示. 3."Database"文件夹内有数据库文件hyb2bTest_Data.MDF,在Sql Server企业管理器中选择"附加数据库" 4.需要修改根目录web.config文件...
在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端...
ASP.NET+c#做的双向探针,即可以看服务器的相关信息,也可以看自己的信息。 不需要做任何设置,上传后就可运行(服务器要支持.net啊) 如果使用国外空间请将web.config一起上传,否则可能会出现乱码。 版本更新...
<br>2、配置IIS (1)打开“开始”→“控制面板”命令,打开“控制面板”窗口,在该窗口中双击“管理工具”图标,进入到“管理工具”窗口,在该窗口中双击“Internet 信息服务”图标,运行“Internet 信息...
LixyNews.sln 解决方案文件(用VS2005直接运行该文件可以打开项目,并进行调试,可以不用去IIS里面设什么虚拟目录啦,这是VS2005带来的方便) NewsWeb 源码文件夹 Default.aspx 新闻首页 AddNews.aspx 添加新闻 ...
是直接关系到小区居民日常生活的系统,是近几年来楼市发展中必然出现的产物,它有力地缓解了小区物业在小区管理工作中,因为人员缺乏,以及资金紧张而带来的压力,实现统一化管理,使小区管理工作电子化,虚拟化,提高...