您在ASP.Net中使用什么Url重写器?

您在ASP.Net中使用什么Url重写器?,asp.net,iis,url-rewriting,urlrewriter,Asp.net,Iis,Url Rewriting,Urlrewriter,我看了一些ASP.Net和IIS的URL重写器,想知道其他人都在用什么,为什么 以下是我使用过或看过的: :在以前的项目中使用,没有我们想要的灵活性/性能 :在当前项目中使用,但源似乎已被放弃 :似乎是一个不错的图书馆,但文档糟糕的语法让我感到不安 :这是我当前的最爱,具有很大的灵活性,尽管注入替换正则表达式的额外函数稍微改变了标准的.Net正则表达式语法 :我在堆栈溢出中发现了这个,但还没有尝试过,从示例语法来看,它似乎无法通过web.config进行编辑 如果我现在开始一个新的web项目,

我看了一些ASP.Net和IIS的URL重写器,想知道其他人都在用什么,为什么

以下是我使用过或看过的:

  • :在以前的项目中使用,没有我们想要的灵活性/性能
  • :在当前项目中使用,但源似乎已被放弃
  • :似乎是一个不错的图书馆,但文档糟糕的语法让我感到不安
  • :这是我当前的最爱,具有很大的灵活性,尽管注入替换正则表达式的额外函数稍微改变了标准的.Net正则表达式语法
  • :我在堆栈溢出中发现了这个,但还没有尝试过,从示例语法来看,它似乎无法通过web.config进行编辑

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

刚刚随.NET 3.5发布了System.Web.Routing

您只需在自定义HttpModule中使用Request.RewritePath()


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

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

我有一个很好的体验,除了免费外,它与ISAPI_Rewrite非常相似。两者都是以mod_rewrite为模型的,并且都是ISAPI过滤器,因此您无法在代码中管理它们,因为您必须在IIS中设置它们。

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


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

我刚刚安装了。工作原理与htaccess完全相同。到目前为止,我正在研究它。

我使用它非常成功。它几乎与MODY重写一致,几乎使用了所有相同的语法。该项目的业主非常乐于助人,而且非常友好,产品运行良好。这个gem提供了重写和代理功能,这是许多解决方案所不提供的。IMO,值得一看。

IIS 7具有相当强大的功能,并且与IIS集成良好。

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

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

+1对于UrlRewritingNet.UrlRewrite也是如此,但为什么我总是需要以.aspx结束我的URL?我认为正则表达式方面应该做得更好

为什么我总是要在virtualURL localhost/Products/Beverages.aspx“,“localhost/Products/Conquipments.aspx”中以aspx结尾。我只想键入localhost/Products/Beverages“,“localhost/Products/Conquipments”,看起来像MVC路线


一个看起来不错,但它不适合我的网站。我还是搞不懂。asp.net路由也满足了url重写的要求,甚至远远不止于此。使用asp.net路由,您不仅可以“重写url”,还可以为各种请求创建自定义处理程序。 但是,asp.net路由至少需要asp.net sp1

要使简单路由正常工作,您需要做的基本工作是在应用程序中添加一些路由处理程序,甚至在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"));

        }

我对此有意见。我需要的是重定向到另一个站点。例如:要仅对微小的URL使用文本框是不可能的,需要对源代码进行更改。因此,我使用了ManagedFusion如此硬编码的部分名称“urlrewritingnet”是一个巨大的惊喜,这并非不可能。它只需要奉献和定义。我会想象你在谈论下面的事情?或者只是destinationUrl=“somesite.com/with?alot&;of&;parameters”?当然,这是一个学习曲线,但嘿,这是我用过的比较全面的曲线之一。路由和MVC天生就是要一起使用的,在这种情况下,它们肯定不会对您有更好的帮助。+1作为新的skool!这是我用的。但是,如果您习惯于UrlRewritingNet.Rewrite,请小心,因为Request.Url现在是实际页面,而不是请求的页面。现在,您需要Request.RawUrl来获取实际使用
请求的url。aspx
使用可能是由于IIS的限制。否则,您必须映射
*
才能使用aspnet\u isapi.dll。许多主机提供商不允许这样做,这可能会导致性能下降和其他一些奇怪的问题,如PNG使用错误的mime类型。这在Windows 2008 R2上不是问题,所有站点(50+)都在与UrlRewritingNet.UrlRewrite集成的池中运行