我有一个遗留的 asp.net 网站,我正在迁移到 asp.net mvc。
我想将现有 url 永久重定向到 asp.net mvc Controller 。我的 Controller 具有这些链接的新位置的 View ,我想在现有页面上执行 301 重定向到新 View 。
我有两种不同类型的 url:
类型 2 url 是 asp.net mvc 路由处理之前的现有 url 重写器模块的结果。
我有现有的重定向代码:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url);
Response.End();
我应该在哪里进行重定向?
我看到两个选项:
Application_BeginRequest - 使用正则表达式解析 url
我喜欢它的地方:
- 我已经在此处检查大写 url 以重定向到小写 url
- 我有机会直接处理响应,而不必返回 ActionResult
我不喜欢它的地方:
- 顶部的 URL 类型 #2 必须映射到新的 Controller / View ,这意味着我需要做一些数据库工作来获取 URL 的路径
Controller Actions - 使用路由和 Controller 进行重定向
我喜欢它的地方:
- 我可以干净利落地完成我需要的数据库工作
我不喜欢它的地方:
- Controller 需要返回一个 View ,我直接操作响应流来创建 301。
任何建议都很好,谢谢。
最佳答案
在这两个选择中,我会选择 Controller 操作。 不需要 Controller 返回 View ——我相信您甚至可以使用 ASP.NET MVC 使 Controller 方法返回 void
。我喜欢这个选项的原因是因为数据库交互——我认为在 BeginRequest 中启动数据库会影响整体性能。
如果这不是问题,我认为将它与其余路由信息放在一起最有意义(即与 BeginRequest 一起)。
关于c# - asp.net mvc 遗留路由映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1090220/