目前已經有很多介紹創建iis虛擬目錄的文章了,我個人也翻譯過一篇. 
但是這些文章只介紹如何來創建、刪除一個虛擬目錄,卻沒有介紹如何修改一個虛擬目錄的asp.net版本.如果機子上裝有兩個版本以.net framework,在創建時將使用iis中默認使用的版本,而默認的版本又不是你需要的,那怎么辦?在部署后手動修改?還是在部署時直接使用程序修改呢? 
本文將介紹一個方法用于修改虛擬目錄的asp.net版本. 
asp.net iis 注冊工具
使用asp.net iis 注冊工具 (aspnet_regiis.exe)可以方便地更新 asp.net 應用程序的腳本映射,使其指向與該工具關聯的 asp.net isapi 版本. 
關于asp.net iis 注冊工具的更詳細的內容,請參考msdn. 
在控制臺上我們使用下面的命令可以修改一個虛擬目錄的asp.net版本: 
aspnet_iis.exe –s path
我們知道了如何來修改一個虛擬目錄的版本,現在的問題就是如何使用程序來實現它了.
以下代碼基于.net framework 2.0 在windows xp sp2中編譯通過:
//創建一個虛擬目錄 
            directoryentry dirroot = new directoryentry("iis://localhost/w3svc/1/root"); 
            directoryentries dirs = dirroot.children; 
            directoryentry virtualdir = dirs.add("virtualchange", dirroot.schemaclassname); 
            object[] objs = new object[] { true }; 
            virtualdir.invoke("appcreate", objs); 
            virtualdir.properties["appfriendlyname"][0] = "virtualchange"; 
            virtualdir.properties["path"].value = "c://virtualchange"; 
            virtualdir.commitchanges(); 
            //啟動aspnet_iis.exe程序 
            string filename = environment.getenvironmentvariable("windir") + @"/microsoft.net/framework/v1.1.4322/aspnet_regiis.exe"; 
            processstartinfo startinfo = new processstartinfo(filename); 
            //處理目錄路徑 
            string path = virtualdir.path.toupper(); 
            int index = path.indexof("w3svc"); 
            path = path.remove(0, index); 
            //啟動aspnet_iis.exe程序,刷新教本映射 
            startinfo.arguments = "-s " + path; 
            startinfo.windowstyle = processwindowstyle.hidden; 
            startinfo.useshellexecute = false; 
            startinfo.createnowindow = true; 
            startinfo.redirectstandardoutput = true; 
            startinfo.redirectstandarderror = true; 
            process process = new process(); 
            process.startinfo = startinfo; 
            process.start(); 
            process.waitforexit(); 
            string errors = process.standarderror.readtoend(); 
            if (errors != string.empty) 
                throw new exception(errors); 
            console.writeline(process.standardoutput.readtoend());
新聞熱點
疑難解答
圖片精選