Asp.net网站的ClickOnce自动部署(2)-虚拟目录的配置
2005-11-26 00:38
603 查看
第一步先讲虚拟目录的配置,虚拟目录的配置简单来说就是创建虚拟目录。用手工的方式实现非常简单,直接设定“Web sharing”就可以了,让我们看看怎么通过编程的方式实现,本文将介绍两种创建虚拟目录的方法:
1、通过调用iisvdir.vbs,
2、通过System.DirectoryServices.DirectoryEntry。
如果看官有其他的方法,欢迎讨论chwkai@gmail.com。
为了方便描述,我写了两个虚拟目录操作类,简单的封装了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虚拟目录的方法,结构如下所示:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath
2)删除虚拟目录:
3)查看指定虚拟目录下的全部子目录:
通过封装这三个操作,可以实现iis虚拟目录的创建、删除和判断是否存在:
1)创建虚拟目录:
2)删除虚拟目录:
3) 判断虚拟目录是否存在:
ScriptDirectory.ExecuteScript函数封装了iisvdir.vbs的调用和参数的组合,代码比较长,大家可以在/Files/chwkai/CreateIIsDirectory.rar下载到本文所讨论的代码。
orz,明天还有场球赛,睡觉了。下次的文章将继续写到,如何用System.DirectoryServices.DirectoryEntry来创建IIS虚拟目录,相对于iisvdir.vbs,这种方式更加灵活,并且具有更多的功能,如设定虚拟目录属性等。
1、通过调用iisvdir.vbs,
2、通过System.DirectoryServices.DirectoryEntry。
如果看官有其他的方法,欢迎讨论chwkai@gmail.com。
为了方便描述,我写了两个虚拟目录操作类,简单的封装了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虚拟目录的方法,结构如下所示:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath
2)删除虚拟目录:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /delete [virtualRoot]/Alias
3)查看指定虚拟目录下的全部子目录:
cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /query virtualRoot
通过封装这三个操作,可以实现iis虚拟目录的创建、删除和判断是否存在:
1)创建虚拟目录:
1 /// <summary> 2 /// 创建iis虚拟目录 3 /// </summary> 4 /// <exception cref="CreateIIsDirectory.DirectoryException">虚拟目录操作异常</exception> 5 public override void CreateDirectory() 6 { 7 // 已不覆盖的方式创建虚拟目录,当虚拟目录存在时抛出异常 8 this.CreateDirectory(false); 9 } /// <summary> /// 创建iis虚拟目录 /// </summary> /// <param name="bReplace">是否覆盖掉原有的虚拟目录</param> /// <exception cref="CreateIIsDirectory.DirectoryException">虚拟目录操作异常</exception> public override void CreateDirectory(bool bReplace) { // 判断目录是否存在 if (this.Exist()) { if (bReplace) { // 若允许覆盖则先删除原有的虚拟目录 this.DeleteDirectory(); } else { // 若不允许覆盖直接抛出目录已存在的异常 DirectoryException.Throw("directory already exist"); } } ReturnMessage message = ScriptDirectory.ExecuteScript( this, ScriptDirectory.CONST_ACTION_CREATE); // 输出message信息供nunit查看 Console.WriteLine("return code: " + message.Code); Console.WriteLine("return message: \n" + message.Message); // 若创建失败抛出虚拟目录操作异常 if (message.Code != 0) { DirectoryException.Throw(message.Message); } }
2)删除虚拟目录:
1 /// <summary> 2 /// 删除iis虚拟目录 3 /// </summary> 4 /// <exception cref="CreateIIsDirectory.DirectoryException">虚拟目录操作异常</exception> 5 public override void DeleteDirectory() 6 { 7 ReturnMessage message = ScriptDirectory.ExecuteScript( 8 this, ScriptDirectory.CONST_ACTION_DELETE); 9 // 输出message信息供nunit查看 Console.WriteLine("return code: " + message.Code); Console.WriteLine("return message: \n" + message.Message); // 若删除失败抛出虚拟目录操作异常 if (message.Code != 0) { DirectoryException.Throw(message.Message); } }
3) 判断虚拟目录是否存在:
1 /// <summary> 2 /// 判断iis虚拟目录是否存在 3 /// </summary> 4 /// <returns>目录是否存在</returns> 5 public override bool Exist() 6 { 7 ReturnMessage message = ScriptDirectory.ExecuteScript( 8 this, ScriptDirectory.CONST_ACTION_QUERY); 9 bool bExist = false; // 输出message信息供nunit查看 Console.WriteLine("return code: " + message.Code); Console.WriteLine("return message: \n" + message.Message); // 从返回字符串中判断该虚拟目录是否存在 if (message.Code == 0) { Regex reg = new Regex("/" + this.m_strAlias + @"\s+"); message.Message = message.Message.Substring( message.Message.IndexOf("/")); bExist = reg.IsMatch(message.Message); } return bExist; }
ScriptDirectory.ExecuteScript函数封装了iisvdir.vbs的调用和参数的组合,代码比较长,大家可以在/Files/chwkai/CreateIIsDirectory.rar下载到本文所讨论的代码。
orz,明天还有场球赛,睡觉了。下次的文章将继续写到,如何用System.DirectoryServices.DirectoryEntry来创建IIS虚拟目录,相对于iisvdir.vbs,这种方式更加灵活,并且具有更多的功能,如设定虚拟目录属性等。
相关文章推荐
- Asp.net网站的ClickOnce自动部署(3)-虚拟目录的配置
- Asp.net网站的ClickOnce自动部署(1)-自动部署的内容
- Asp.net网站的ClickOnce自动部署
- asp.net 文件路径之获得虚拟目录的网站的根目录
- asp.net下返回文件路径,获得虚拟目录的网站的根目录
- 在Win7中IIS配置Asp.Net虚拟目录的方法及错误总结!
- IIS部署ASP.NET网站后提示只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态...
- asp.net网站运行时,读取的配置文件总是网站根目录的配置文件
- [ASP.NET]在虚拟目录中禁止web.config继承IIS根目录的web.config的配置
- [ASP.NET]在虚拟目录中禁止web.config继承IIS根目录的web.config的配置
- ASP.NET--网站配置、发布与部署
- ASP.NET 实践:在 IIS 中创建并配置虚拟目录
- #asp.net应用程序目录 虚拟主机的配置
- ASP.NET 管理网站(虚拟目录)
- ASP.NET 管理网站(虚拟目录)
- SVN配置以及自动部署到apache虚拟目录
- [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法
- Asp.net网站的自动部署-sqlserver数据库的自动部署
- asp.net 文件路径之获得虚拟目录的网站的根目录
- 利用Powershell自动部署asp.net mvc网站项目 (一)