2010-06-01 198 views
1

夥計們,我想在ASP.NET中編寫一個程序來在託管服務器上創建虛擬目錄。請告訴我如何編程?虛擬目錄創建

回答

1

這對IIS 6和7是不同的,我不知道這是否會在ASP.Net中工作,或者如果它必須從Winform/Console應用程序完成(由於角色安全性)...

如果6用途:

DirectoryEntry deIIS = new DirectoryEntry("IIS://" + Environment.MachineName + "/W3SVC/1/Root"); 
DirectoryEntry deNewVDir = deIIS.Children.Add(vdName, deIIS.SchemaClassName.ToString()); 
deNewVDir.CommitChanges(); 
deIIS.CommitChanges(); 

爲7:

ServerManager iisManager = new ServerManager(); 
iisManager.Sites["Default Web Site"].Applications.Add("/myVirtualDirectory", installationDirectory); 
iisManager.Sites["Default Web Site"].Start(); 
iisManager.CommitChanges(); 
+0

先生,我是我網站的所有者。我擁有所有的管理權。其實我想創建一個管理員面板來創建用於存儲用戶上傳的圖像的虛擬目錄。 – Yogesh 2010-06-01 10:46:42

+0

@Rohan:你擁有所有權利並不重要:運行任何ASP.NET頁面的ASP.NET用戶的權限非常有限。否則,每個使用你的頁面的人都是管理員。爲了存儲上傳的圖像,您不需要虛擬目錄,只需使用Directory.CreateDirectory並將其指向ASP.NET用戶具有創建權限的位置即可。 – Abel 2010-06-01 11:02:20

+0

@阿貝爾:親愛的亞伯!我想說我已經在ASP.NET中爲我的網站創建了一個後端面板。我有Windows無限空間託管。我已經制作了從我的網站上從後端面板上傳圖片的功能。但這些圖像存儲在默認目錄中,所以我想爲不同類別的圖像創建個別目錄。所以告訴我,代碼自動創建目錄 – Yogesh 2010-06-01 11:25:50

2

爲了解決這個問題,你需要impersonate an administrator,或至少具有足夠權限的用戶。之後,使用類似the code provided here(其他示例可用,try Google)或Russ C在此線程中提供的代碼。

也許太明顯,但無論如何我這樣做:這樣做是危險(!!)。確保使用不僅僅是密碼來保護您的頁面(即將IP地址過濾器添加到防火牆)。

編輯:
似乎問題並不約爲虛擬目錄,但只是目錄。假設權利設置正確,以下應該可以在您當前的虛擬路徑下創建一個目錄:

string serverVirtualPath = Server.MapPath("~"); 
DirectoryInfo dirInfo = new DirectoryInfo(serverVirtualPath); 
dirInfo.CreateSubDirectory("MyImageSubDir"); // returns a DirectoryInfo object