c# - ASP.NET URL 重映射和重定向——需要最佳实践

标签 c# asp.net httpmodule server.transfer

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

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

我正在尝试理解整个场景:

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

  2. 我将如何实际实现重定向:
    我应该使用 Server.Transfer 或 Response.Redirect 编写方法吗?
    是否有最佳实践 - 将实际的重新路由放在 HTTPModules 中......还是 Application_BeginRequest?

我希望通过符合最佳实践的方法和非常低的性能下降(如果有的话)来实现。

最佳答案

如果您的应用程序已经使用数据库,那么我会使用它。使旧 URL 成为主键,查找应该非常快。我会亲自将整个东西包装在抽象它的 .NET 类中,并允许您创建一个 Dictionary<string,string>所有可以从数据库加载到内存并缓存的 URL。这会更快。

绝对不要使用 Server.Transfer .相反,你应该做 301 Permanently Moved重定向。这将使 search engines know使用新的 URL。如果您使用的是 NET 4.0,则可以使用 HttpResponse.RedirectPermanent方法。但是,在早期版本中,您必须自己设置 header - 但 this is trivial .

关于c# - ASP.NET URL 重映射和重定向——需要最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3374394/

相关文章:

c# - 如何在不重启的情况下生成服务模型元数据

asp.net - RazorGenerator 未生成正确的命名空间

javascript - jQuery 和 ASP.Net 资源和陷阱

image - 为什么我的自定义交付图像没有缓存在浏览器中?

c# - 自定义 C# HttpModule 无限重定向循环

c# - 标签数组不工作 c#

c# - 如何在 C# 中将 System.Drawing.Image 转换为 System.Drawing.Icon?

c# - 在 process.startinfo.arguments 中添加/C 开关后,Cmd.exe 进程不会启动隐藏

.net - ASP.NET MasterPage + Javascript 错误

asp.net - 未调用 HttpModule Init 方法