【问题标题】:What's the simplest way to rewrite Urls in ASP.NET MVC / IIS7?在 ASP.NET MVC / IIS7 中重写 Urls 的最简单方法是什么?
【发布时间】:2009-10-01 03:46:31
【问题描述】:

我正在 IIS7 上开发一个 ASP.NET MVC 应用程序,我需要将请求从我的应用程序的一个目录及其子目录重写到另一个目录中的所有文件。这些文件是图像、样式表、经典网络表单文件和普通 html 文档。

实现这一目标的最简单方法是什么?我已经尝试安装 ManagedFusion 的 URL 重写器,但自从我安装它以来,它只会在所有 URL 上给我一个拒绝访问错误。我什至不确定它是否与 ASP.NET MVC 兼容。

谢谢,

阿德里安

【问题讨论】:

    标签: asp.net iis-7 url-rewriting


    【解决方案1】:

    从 IIS7 开始,IIS 附带了一个可用于重写 URL 的模块。

    http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

    “用于 IIS 7.0 的 Microsoft URL 重写模块提供了灵活的基于规则的重写引擎,可用于执行广泛的 URL 操作任务,包括但不限于:

    • 通过动态 Web 应用程序启用用户友好和搜索引擎友好的 URL;
    • 根据 HTTP 标头和服务器变量重写 URL;
    • 网站内容处理;
    • 根据 URL 段或请求元数据控制对网站内容的访问。”

    【讨论】:

      【解决方案2】:

      还有.NET URL Rewriter and Reverse Proxy,和Apache上的mod_rewrite一样,完全免费。

      【讨论】:

        【解决方案3】:

        小心 url 重写和“经典 webforms 文档”——主要是 url 重写会破坏回发。

        无论如何,听起来您正在使用一个旧版应用程序。为什么不直接添加一条被忽略的路由,让 IIS/ASPNET 原生处理其业务?


        感谢您的澄清。 Url 重写在这里可能很有意义。另一个可能更干净的选择是设置一个虚拟目录(实际上是一系列虚拟目录),为水晶报告提供所需的路径。

        如果你想做重写,那就使用原生的 url 重写模块——它非常漂亮,应该是最好的支持。

        【讨论】:

        • 说来话长……我在我的应用程序中使用 Crystal Reports(这是遗留部分),只需通过 IFrame 包含报告即可。 CR 需要一个特殊目录中的所有视觉资源、弹出窗口等。不幸的是,这些资源的路径太深了,我无法将它们签入版本控制,因为它会超过 Tortoise SVN 支持的最大路径长度,除非我移动我的整个 Web 项目,这会导致更多麻烦。
        【解决方案4】:

        Helicon 有一个很好的工具,售价 99 美元。它与 mod_rewrite 基本相同,因此很容易找到有用的帮助。我已经很幸运了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-19
          • 2013-03-04
          • 2015-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          相关资源
          最近更新 更多