2011-06-02 68 views
2

我可以使用以下代碼在IIS中創建http重定向。但是,它僅爲主站點「MySite」本身創建重定向。如何以編程方式將重定向添加到虛擬目錄?創建VD時是否需要設置一些設置?謝謝!如何使用C#從虛擬目錄創建HTTP重定向

ServerManager iisManager = new ServerManager(); 
Configuration config = iisManager.GetWebConfiguration("MySite"); 
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect"); 
httpRedirectSection["enabled"] = true; 
httpRedirectSection["destination"] = @"http://www.google.com"; 
httpRedirectSection["exactDestination"] = false; 
httpRedirectSection["httpResponseStatus"] = @"Found"; 

iisManager.CommitChanges(); 
+0

我的意思是「從」虛擬目錄中讀取了。如果用戶轉到http://MySite/VD.aspx,它會將它們重定向到另一個頁面。我需要能夠通過C#添加這些。 – 2011-06-02 20:03:32

回答

0

肖恩,

你的代碼做什麼基本上修改爲您的網站的web.config文件。虛擬目錄很可能被配置爲一個應用程序,因此它將擁有自己的web.config文件。你嘗試做同樣的事情,但簡單地改變:

Configuration config = iisManager.GetWebConfiguration("MySite/VirtDirName"); 

此外,虛擬目錄,因爲它是一個子應用程序可能已經繼承了父站點httpRedirect設置,我會首先檢查,這是不是這樣。

http://www.iis.net/ConfigReference/system.webServer/httpRedirect

http://msdn.microsoft.com/en-us/library/ms178685.aspx

+0

有沒有一種方法可以在不修改網頁配置的情況下完成此操作?謝謝! – 2011-06-02 21:56:54

+0

要清楚的是,你已經使用的代碼修改了web.config。不要害怕修改它 - 這就是它的目的,爲您提供配置已部署應用程序的方法。你可以按照你的想法做不同的事情,但是這也涉及編輯web.config,我已經做了類似於你正在做的事情的設置,將404錯誤的customErrors頁面(在web.config中)設置爲404。 aspx頁面,然後在aspx頁面中查看實際請求的頁面並進行相應的重定向。不知道這是否更多。 – mikey 2011-06-02 22:14:30

+0

我希望能夠避免修改它的原因是因爲我希望能夠創建一個VD並將其指向一個虛擬目錄,該目錄實際上不會被使用。在較舊版本的IIS中,您可以設置一個VD並選中一個表示其重定向的框。這並不需要修改web配置。我試圖自動化一個從記錄集創建VD的過程,我不能爲每個創建一個新的webconfig。謝謝你的幫助。 – 2011-06-03 15:39:22

0

如果你在IIS託管其7+那麼你可以使用web.config

放入目錄web.config然後添加

<?xml version="1.0"?> 
<configuration> 
    <system.webServer> 
    <httpRedirect enabled="true" destination="/[PathFromRoot]/" childOnly="true" httpResponseStatus="Temporary" /> 
    </system.webServer> 
</configuration> 

您可以在性能here