2010-11-14 51 views
1

我最近部署了新版本的ASP.NET網站。這個網站是從頭開始構建的,因此在舊網站上運行的網址無法在新網址上運行。我發現一些舊頁面被要求很多,所以我想重定向用戶,試圖將這些頁面轉換爲相應的新頁面。在ASP.NET中重定向

比方說,舊的網站有這個頁面: www.mysite.com/mypage.aspx 而新的站點有這種相應的頁面: www.mysite.com/pages/mypage.aspx

什麼將舊頁面的請求重定向到新頁面是一種好的(最好的)方式?

我的第一個雖然是在web.config中使用URL映射,但這對我不起作用。原因是沒有真正的重定向發生,所以顯示的是正確的頁面,但瀏覽器中沒有更新url,這導致了所有相關鏈接都搞砸的問題。

當然,我可以在新網站上重新創建舊的ASPX頁面,並從這些頁面重定向,但我不希望在我的web項目中有這個「垃圾文件」。

最好我想要一個解決方案,我可以在一個地方做所有這些重定向。這就是我喜歡在web.config中使用url映射的原因,但該解決方案還有其他問題。

有什麼建議嗎?

回答

0

如果只有幾頁,您可以爲每個url註冊一個處理程序,然後在處理程序中重定向到正確的頁面。

例如

<add name="GetMemberPortrait.aspx_*" path="GetMemberPortrait.aspx" verb="*" type="ExposureRoom.Web.GetMemberPortrait" preCondition="integratedMode"/> 

在這個web.config文件條目(在處理部分),你看到的路徑「GetMemberPortrait.aspx」的具體處理程序已被註冊。那是指定的那個特定的「aspx」頁面被實例化的。

處理程序可以只是一個實現IHttpHandler接口的.cs文件。你可以使用相同的處理程序來處理所有這些情況。

對於每個網址,您都需要一個條目,但您可以使用相同的處理程序。例如,如果您有3個需要重定向的網址,稱爲 1. page1.aspx 2. page2.aspx 3. page3。ASPX

<add name="page1.aspx_*" path="page1.aspx" verb="*" type="SomeNameSpace.RedirectorHandler" preCondition="integratedMode"/> 
<add name="page2.aspx_*" path="page2.aspx" verb="*" type="SomeNameSpace.RedirectorHandler" preCondition="integratedMode"/> 
<add name="page3.aspx_*" path="page3.aspx" verb="*" type="SomeNameSpace.RedirectorHandler" preCondition="integratedMode"/> 

在您的處理程序,你會得到所有的請求參數,以及使您可以使用這些轉發到重定向頁面。