C# ASP.NET URL重新映射&;重定向-需要最佳实践
这是一个场景:我有一个大约5000个URL的列表,这些URL已经发布给不同的客户。现在,所有这些URL在我的服务器端的位置都改变了。但服务器仍然是一样的。这是一个带有.NET3.5/C#的ASP.NET网站 我的要求是:虽然客户使用旧的源URL,但他们应该被重定向到新URL,而不需要任何感知的更改或中间重定向消息等 我试图理解整个场景:C# ASP.NET URL重新映射&;重定向-需要最佳实践,c#,asp.net,httpmodule,server.transfer,C#,Asp.net,Httpmodule,Server.transfer,这是一个场景:我有一个大约5000个URL的列表,这些URL已经发布给不同的客户。现在,所有这些URL在我的服务器端的位置都改变了。但服务器仍然是一样的。这是一个带有.NET3.5/C#的ASP.NET网站 我的要求是:虽然客户使用旧的源URL,但他们应该被重定向到新URL,而不需要任何感知的更改或中间重定向消息等 我试图理解整个场景: 我将把旧URL到新URL的实际映射放在哪里——在数据库或某些配置中。还是有更好的选择 如何实际实现重定向: 我应该用Server.Transfer ot Res
我应该用Server.Transfer ot Response.Redirect编写一个方法吗?
是否有一种最佳实践,比如将实际的重新路由放在HTTPModules中……还是应用程序开始请求
我希望通过符合最佳实践的方法和非常低的性能降级(如果有)来实现 如果您的应用程序已经使用了数据库,那么我会使用它。将旧URL作为主键,查找速度应该非常快。我个人会将整个内容封装在.NET类中进行抽象,并允许您创建一个
字典
,其中包含可以从数据库加载到内存并缓存的所有URL。这会更快
绝对不要使用
服务器。传输。相反,您应该执行重定向。这将允许您使用新的URL。如果您使用的是NET4.0,则可以使用该方法。但是,在早期版本中,您必须自己设置标题-但是。将数据保存在数据库中,但加载到ASP.NET缓存以减少访问时间。您肯定希望使用HTTPModules。这是公认的做法,最近在Global.asax中尝试过这样做,我可以告诉你,除非你只想做最简单的事情(例如,“~/mypage.aspx/3”“~/mypage.aspx?param1=3
),否则它要比看起来复杂得多,而且有缺陷
事实上,我甚至后悔尝试推出我自己的URL重写解决方案。如果你想要一些你可以依赖的东西,那就不值得了。Scott Guthrie有,他推荐了或作为两个免费的开源URL重写解决方案
祝你好运。+1因为不要使用服务器。传输
,这样做会返回旧URL的新内容,这是你绝对不想要的。谢谢你的输入…但是实际路由将发生在哪里或应该放在哪里?应用程序\u BeginRequest?!你会想使用HttpModule进行路由-请看我正在查看的URL redirec不重写或永久对齐。