日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Asp.net网站的ClickOnce自动部署(2)-虚拟目录的配置

發(fā)布時間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Asp.net网站的ClickOnce自动部署(2)-虚拟目录的配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一步先講虛擬目錄的配置,虛擬目錄的配置簡單來說就是創(chuàng)建虛擬目錄。用手工的方式實現(xiàn)非常簡單,直接設(shè)定“Web sharing”就可以了,讓我們看看怎么通過編程的方式實現(xiàn),本文將介紹兩種創(chuàng)建虛擬目錄的方法:

1、通過調(diào)用iisvdir.vbs,
2、通過System.DirectoryServices.DirectoryEntry。

如果看官有其他的方法,歡迎討論chwkai@gmail.com。

為了方便描述,我寫了兩個虛擬目錄操作類,簡單的封裝了iisvdir.vbs和System.DirectoryServices.DirectoryEntry管理虛擬目錄的方法,結(jié)構(gòu)如下所示:


Server為iis服務(wù)器的ip或機器名,User和Password為該服務(wù)器的管理員用戶名和密碼,Alias為虛擬目錄的名稱,VirtualRoot為虛擬目錄所在根目錄的名稱(如下圖),PhysicalPath為該虛擬目錄相應(yīng)的物理路徑。如果想進一步了解IIS虛擬目錄的屬性,可以參考MSDN?IIsWebVirtualDir。


通過調(diào)用iisvdir.vbs創(chuàng)建虛擬目錄

看官可以參考一下MSDN的相關(guān)資料:
Creating Web Virtual Directories Using Iisvdir.vbs
Deleting Web Virtual Directories Using Iisvdir.vbs?


Listing Web Virtual Directories Using Iisvdir.vbs?

.

仔細看還會發(fā)現(xiàn), IIS管理器也是通過調(diào)用iisvdir.vbs來實現(xiàn)虛擬目錄的創(chuàng)建和刪除的。我們可以通過命令行的方式來執(zhí)行iisvdir.vbs腳本,
1)創(chuàng)建虛擬目錄:

cscript?c:\windows\system32\iisvdir.vbs?[/s?server]?[/u?username?/p?password]?/create [virtualRoot]?Alias?PhysicalPath


2)刪除虛擬目錄:

1cscript?c:\windows\system32\iisvdir.vbs?[/s?server]?[/u?username?/p?password]?/delete?[virtualRoot]/Alias


3)查看指定虛擬目錄下的全部子目錄:

1cscript?c:\windows\system32\iisvdir.vbs?[/s?server]?[/u?username?/p?password]?/query?virtualRoot


通過封裝這三個操作,可以實現(xiàn)iis虛擬目錄的創(chuàng)建、刪除和判斷是否存在:
1)創(chuàng)建虛擬目錄:

?1?///?<summary>
?2?????????///?創(chuàng)建iis虛擬目錄
?3?????????///?</summary>
?4?????????///?<exception?cref="CreateIIsDirectory.DirectoryException">虛擬目錄操作異常</exception>
?5?????????public?override?void?CreateDirectory()
?6?????????{
?7?????????????//?已不覆蓋的方式創(chuàng)建虛擬目錄,當虛擬目錄存在時拋出異常
?8?????????????this.CreateDirectory(false);
?9?????????}
10?
11?????????///?<summary>
12?????????///?創(chuàng)建iis虛擬目錄
13?????????///?</summary>
14?????????///?<param?name="bReplace">是否覆蓋掉原有的虛擬目錄</param>
15?????????///?<exception?cref="CreateIIsDirectory.DirectoryException">虛擬目錄操作異常</exception>
16?????????public?override?void?CreateDirectory(bool?bReplace)
17?????????{
18?????????????//?判斷目錄是否存在
19?????????????if?(this.Exist())
20?????????????{
21?????????????????if?(bReplace)
22?????????????????{
23?????????????????????//?若允許覆蓋則先刪除原有的虛擬目錄
24?????????????????????this.DeleteDirectory();
25?????????????????}
26?????????????????else
27?????????????????{
28?????????????????????//?若不允許覆蓋直接拋出目錄已存在的異常
29?????????????????????DirectoryException.Throw("directory?already?exist");
30?????????????????}
31?????????????}
32?
33?????????????ReturnMessage?message?=?ScriptDirectory.ExecuteScript(
34?????????????????this,?ScriptDirectory.CONST_ACTION_CREATE);
35?
36?????????????//?輸出message信息供nunit查看
37?????????????Console.WriteLine("return?code:?"?+?message.Code);
38?????????????Console.WriteLine("return?message:?\n"?+?message.Message);
39?
40?????????????//?若創(chuàng)建失敗拋出虛擬目錄操作異常
41?????????????if?(message.Code?!=?0)
42?????????????{
43?????????????????DirectoryException.Throw(message.Message);
44?????????????}
45?????????}


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?
10?????????????//?輸出message信息供nunit查看
11?????????????Console.WriteLine("return?code:?"?+?message.Code);
12?????????????Console.WriteLine("return?message:?\n"?+?message.Message);
13?
14?????????????//?若刪除失敗拋出虛擬目錄操作異常
15?????????????if?(message.Code?!=?0)
16?????????????{
17?????????????????DirectoryException.Throw(message.Message);
18?????????????}
19?????????}

?

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;
10?
11?????????????//?輸出message信息供nunit查看
12?????????????Console.WriteLine("return?code:?"?+?message.Code);
13?????????????Console.WriteLine("return?message:?\n"?+?message.Message);
14?
15?????????????//?從返回字符串中判斷該虛擬目錄是否存在
16?????????????if?(message.Code?==?0)
17?????????????{
18?????????????????Regex?reg?=?new?Regex("/"?+?this.m_strAlias?+?@"\s+");
19?????????????????message.Message?=?message.Message.Substring(
20?????????????????????message.Message.IndexOf("/"));
21?
22?????????????????bExist?=?reg.IsMatch(message.Message);
23?????????????}
24?
25?????????????return?bExist;
26?????????}


ScriptDirectory.ExecuteScript函數(shù)封裝了iisvdir.vbs的調(diào)用和參數(shù)的組合,代碼比較長,大家可以在/Files/chwkai/CreateIIsDirectory.rar下載到本文所討論的代碼。

orz,明天還有場球賽,睡覺了。下次的文章將繼續(xù)寫到,如何用System.DirectoryServices.DirectoryEntry來創(chuàng)建IIS虛擬目錄,相對于iisvdir.vbs,這種方式更加靈活,并且具有更多的功能,如設(shè)定虛擬目錄屬性等。

總結(jié)

以上是生活随笔為你收集整理的Asp.net网站的ClickOnce自动部署(2)-虚拟目录的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。