【问题标题】:Convert ASP.NET Webforms url to MVC route将 ASP.NET Webforms url 转换为 MVC 路由
【发布时间】:2010-07-01 10:24:21
【问题描述】:

我正在用新的 MVC 应用程序替换旧的 ASP.NET webforms 应用程序。但是,我遇到了一个问题,即用户拥有指向特定页面的旧链接,我想自动将其转换为正确的 MVC 路由。

旧网站:http://mysite.com/ticketsdetail.aspx?id=12345

新网站:http://mysite.com/tickets/details/12345

在 MVC 路由中是否有办法捕获旧网址并将其转换为新网址?

编辑:

好的,使用 IIS7 URL 重写的 web.config 条目是:

<rewrite>
  <rules>
    <rule name="Ticket page redirect" stopProcessing="true">
      <match url="ticketsdetail.aspx$" />
      <conditions>
        <add input="{QUERY_STRING}" pattern="id=(\d*)$" />
      </conditions>
      <action type="Redirect" url="Calls/Tickets/{C:1}" appendQueryString="false" redirectType="Temporary" />
    </rule>
  </rules>
</rewrite>

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    我的建议是不要在代码中这样做,除非你绝对需要。 Scott Hanselman 有一篇很好的文章,介绍了如何使用 IIS Url Rewrite 在 web.conf 中执行您需要的操作。 Article Here

    这将是您的规则,也将出现在您的 web.config 中:

    <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
        <match url="^ticket/details/([^/]+)/?$" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="ticketdetails.aspx?id={R:1}" />
    </rule>
    

    【讨论】:

    • 您的输入和输出是错误的,但这让我们到达了我们需要的地方,谢谢。
    【解决方案2】:

    如果您使用的是 IIS7,那么 URL 重写工具非常漂亮; http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

    这是一篇好文章; http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/

    您应该使用哪个选项?

    如果所有这些信息意味着什么 你需要选择一种技术 为您的网站启用干净的 URL 应用程序?在本节中,我们 解释如何做出这个选择。

    如果您的 Web 应用程序是由 使用除 ASP.NET 之外的任何东西,使用 IIS URL 重写模块。否则,该 规则是:

    1. 如果您正在开发一个新的 ASP.NET Web 应用程序,该应用程序使用 ASP.NET MVC 或 ASP.NET 动态 数据技术,使用 ASP.NET 路由。您的申请将受益 来自对干净 URL 的原生支持, 包括生成干净的 URL 网页中的链接。注意 ASP.NET 路由不支持 标准的 Web 表单应用程序, 虽然有计划支持它 未来。
    2. 如果您已经有旧的 ASP.NET Web 应用程序并且没有 想要改变它,使用 URL Rewrite 模块。 URL 重写模块允许 你翻译搜索引擎友好 URL 转换为您的格式 应用程序当前使用。还有,它 允许您创建重定向规则 可用于重定向搜索引擎 抓取工具来清理网址。

    但是,让 url 重写器在 iis 级别整理出这类东西对我来说是合乎逻辑的,特别是因为您需要使用正则表达式将查询字符串拉开以形成新的 url。 url 重写器做得非常好。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2011-02-20
      • 2012-03-19
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2010-11-22
      • 2010-11-13
      相关资源
      最近更新 更多