【问题标题】:What Url rewriter do you use for ASP.Net? [closed]您为 ASP.Net 使用什么 Url 重写器? [关闭]
【发布时间】:2010-09-06 02:16:03
【问题描述】:

我查看了几个用于 ASP.Net 和 IIS 的 URL 重写器,想知道其他人都在使用什么,以及为什么。

以下是我用过或看过的:

  • ThunderMain URLRewriter:在之前的项目中使用过,没有我们想要的灵活性/性能
  • Ewal UrlMapper:在当前项目中使用过,但是源码好像被废弃了
  • UrlRewritingNet.UrlRewrite: 看起来像一个不错的库,但是文档的糟糕语法让我感到不安
  • UrlRewriter.NET:这是我目前的最爱,具有很大的灵活性,尽管注入到替换正则表达式中的额外功能会稍微改变标准的 .Net 正则表达式语法
  • Managed Fusion URL Rewriter:我在堆栈溢出的previous question 中找到了这个,但还没有尝试过,从示例语法来看,它似乎无法通过 web.config 进行编辑

【问题讨论】:

    标签: asp.net iis url-rewriting urlrewriter


    【解决方案1】:

    asp.net 路由也可以满足 url 重写的需求,甚至更多。使用 asp.net 路由,您不仅可以“重写 url”,还可以为各种请求创建自定义处理程序。 然而,asp.net 路由至少需要 asp.net sp1。

    要使简单路由正常工作,您所做的基本操作是在 Application_Start 甚至 Global.asax.cs 文件中添加一些路由处理程序。

     protected void Application_Start(object sender, EventArgs e)
            {
    
                            RegisterRoutes(RouteTable.Routes);
    
    
            }
            private static void RegisterRoutes(RouteCollection routes)
            {          
    
                routes.Add("Routing1", new Route("/Blog/id/2","/Blog.aspx"));
    
            }
    

    【讨论】:

      【解决方案2】:

      +1 也适用于 UrlRewritingNet.UrlRewrite,但为什么我总是需要用 .aspx 结束我的 URL?我认为应该改进更好的正则表达式部分。

      为什么我在 virtualURL localhost/Products/Beverages.aspx", "localhost/Products/Condiments.aspx" 中总是要以 aspx 结尾。我只想输入 localhost/Products/Beverages", "localhost/Products/调味品”,看起来像 MVC 路线。

      This 一个看起来不错,但它不适用于我的网站。我还是想不通。

      【讨论】:

      • 使用以.aspx 结尾是由于 IIS 的限制。否则,您必须映射.* 才能使用aspnet_isapi.dll。许多托管服务提供商不允许这样做,这可能会导致性能下降和其他一些奇怪的问题,例如使用错误的 mime 类型提供的 PNG。
      【解决方案3】:

      如果您在 IIS7 Windows 2008 环境中,我不建议使用 UrlRewritingNet。

      原因: UrlRewritingNet 要求您的应用程序池模式 = 经典且未集成。 这不是最优的 另外,他们的项目在过去 2 年里似乎已经死了。

      【讨论】:

      • 这在 Windows 2008 R2 上不是问题,所有站点 (50+) 在集成池中运行,带有 UrlRewritingNet.UrlRewrite
      【解决方案4】:

      IIS 7 有一个URL Rewrite Module,它的功能相当强大,并且与 IIS 集成得很好。

      【讨论】:

      • +1 成为新学校!这就是我使用的。如果您习惯于 UrlRewritingNet.Rewrite,请小心,因为 Request.Url 现在是实际页面,而不是请求的页面。现在你需要 Request.RawUrl 来获取实际请求的 url
      【解决方案5】:

      我使用.NET URL Rewriter and Reverse Proxy 取得了巨大成功。它几乎与 mod_rewrite 相当,并且使用几乎所有相同的语法。该项目的所有者非常乐于助人和友好,并且产品效果很好。此 gem 提供了许多解决方案不提供的重写和代理功能。 IMO,值得一看。

      【讨论】:

        【解决方案6】:

        我刚刚安装了Helicon's ISAPI Rewrite 3。与 htaccess 完全一样。到目前为止,我正在挖掘它。

        【讨论】:

          【解决方案7】:

          +1 UrlRewritingNET.URLRewrite -- 在一个盒子上的数百个服务/门户/站点中使用多年,没有问题! (@Jason——你说的是那个,对吧?)

          我还在个人网站上使用了 URLRewriter.NET,发现它,啊,很有趣。 @travis,你对改变的语法是正确的,但是一旦你习惯了它,它就很好。

          【讨论】:

          • 我有一个问题。我需要的是重定向到另一个站点。例如:example.com/some3rdpartysomesite.com/with?alot&of&parameters 只是为了小 URL 不可能从盒子里做,需要改变来源。所以我使用了 ManagedFusion
          • 还有硬编码的部分名称“urlrewritingnet”是一个很大的惊喜T_T
          • 这不是不可能的。它只需要奉献精神和定义。我想你在谈论类似以下的事情? 或者只是destinationUrl ="somesite.com/with?alot&of&parameters"?当然,有一个学习曲线,但是,嘿,它是我使用过的更全面的曲线之一。路由和 MVC 天生就是要一起使用的,在这种情况下它们肯定不会更好地帮助你。
          【解决方案8】:

          System.Web.Routing 刚刚随 .NET 3.5 一起发布。

          您可以在自定义 HttpModule 中使用 Request.RewritePath()

          我更喜欢使用 IHttpHandlerFactory 实现,并且可以完全控制所有传入的 URL 及其映射到的位置。

          【讨论】:

            【解决方案9】:

            我对@9​​87654321@ 有很好的体验,它与ISAPI_Rewrite 非常相似,除了免费。两者都是在 mod_rewrite 之后建模的,并且是 ISAPI 过滤器,因此您无法在代码中管理它们,因为您必须在 IIS 中设置它们。

            【讨论】:

              【解决方案10】:

              我之前在一个流量非常大的网站上使用过 UrlRewriting.NET - 它对我们非常有用。我相信开发人员是德国人,所以英文文档可能不如预期的那么好。我强烈推荐它。

              【讨论】:

                【解决方案11】:

                如果我现在开始一个新的 Web 项目,我会考虑从头开始使用 MVC。这使用重写的 URL 作为标准。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-03-29
                  • 1970-01-01
                  • 2012-01-12
                  • 2015-03-08
                  • 1970-01-01
                  • 2010-09-30
                  • 2010-09-07
                  • 1970-01-01
                  相关资源
                  最近更新 更多