2010-11-14 89 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"/> 

在您的处理程序,你会得到所有的请求参数,以及使您可以使用这些转发到重定向页面。