C# ASP.NET 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

这是一个场景:我有一个大约5000个URL的列表,这些URL已经发布给不同的客户。现在,所有这些URL在我的服务器端的位置都改变了。但服务器仍然是一样的。这是一个带有.NET3.5/C#的ASP.NET网站

我的要求是:虽然客户使用旧的源URL,但他们应该被重定向到新URL,而不需要任何感知的更改或中间重定向消息等

我试图理解整个场景:

  • 我将把旧URL到新URL的实际映射放在哪里——在数据库或某些配置中。还是有更好的选择

  • 如何实际实现重定向:
    我应该用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不重写或永久对齐。