tag route net for data asp all asp.net iis url-rewriting urlrewriter

route - ¿Qué reescritura de Url usa para ASP.Net?



tag helpers asp net core (11)

He tenido una buena experiencia con el ISAPI Rewrite Filter de Ionic, que es muy similar a ISAPI_Rewrite, excepto de forma gratuita. Ambos se modelan después de mod_rewrite y son filtros ISAPI, por lo que no puedes administrarlos en código ya que tienes que configurarlos en IIS.

He revisado varios reescritura de URL para ASP.Net e IIS y me preguntaba qué usan todos los demás y por qué.

Estos son los que he usado o he visto:

  • ThunderMain URLRewriter : utilizado en un proyecto anterior, no tenía la flexibilidad / rendimiento que estábamos buscando
  • Ewal UrlMapper : utilizado en un proyecto actual, pero la fuente parece estar abandonada
  • UrlRewritingNet.UrlRewrite : parece una biblioteca decente, pero la mala gramática de la documentación me hace sentir incómodo
  • UrlRewriter.NET : este es mi favorito actual, tiene una gran flexibilidad, aunque las funciones extra que se bombean en las expresiones regulares de reemplazo cambian la sintaxis .Net regex estándar un poco
  • Reescritura de Fusion URL administrada : encontré esta en una pregunta anterior sobre el desbordamiento de la pila, pero aún no la he probado, a partir de la sintaxis de ejemplo, no parece ser editable a través de web.config

He usado UrlRewriting.NET antes en un sitio con mucho tráfico, funcionó muy bien para nosotros. Creo que los desarrolladores son alemanes, por lo que la documentación en inglés probablemente no sea tan buena como podría ser. Lo recomiendo encarecidamente


Si estuviera comenzando un nuevo proyecto web ahora estaría buscando usar MVC desde cero. Eso usa URL reescritas como estándar.


+1 UrlRewritingNET.URLRewrite: utilizado en varios cientos de servicios / portales / sitios en un solo cuadro sin problemas durante años. (@Jason - ese es el tema del que estás hablando, ¿verdad?)

y también he usado el URLRewriter.NET en un sitio personal, y lo encontré, ah, interesante. @travis, tienes razón sobre la sintaxis modificada, pero una vez que te acostumbras, está bien.


Hay System.Web.Routing que acaba de lanzarse con .NET 3.5.

Solo puede usar Request.RewritePath () en un HttpModule personalizado

Prefiero usar una implementación IHttpHandlerFactory y tener control total sobre todas las URL entrantes y dónde se asignan.



Utilicé .NET URL Rewriter y Reverse Proxy con gran éxito. Está casi a la par con mod_rewrite y usa casi la misma sintaxis. El propietario del proyecto es extremadamente servicial y amigable, y el producto funciona de maravilla. Esta joya proporciona funciones de Reescritura y Proxy, que muchas soluciones no ofrecen. OMI, vale la pena echarle un vistazo.



No recomendaría UrlRewritingNet si se encuentra en un entorno IIS7 Windows 2008.

Motivo: UrlRewritingNet requiere que el modo de grupo de aplicaciones = clásico y NO integrado. Esto no es óptimo. Además, su proyecto parece muy muerto en los últimos 2 años.


+1 para UrlRewritingNet.UrlRewrite también, pero ¿por qué siempre necesito finalizar mi URL con .aspx? Creo que debería mejorarse mejor expresión regular partern.

¿Por qué siempre tengo que terminar con aspx en virtualURL localhost / Products / Beverages.aspx "," localhost / Products / Condiments.aspx ". Solo quiero escribir localhost / Products / Beverages", "localhost / Products / Condiments" que parece una ruta MVC.

Este se ve bien, pero no está funcionando para mi sitio. Todavía no puedo entenderlo.


El enrutamiento de asp.net cumple el requisito de reescritura de URL también e incluso mucho más. Con el enrutamiento asp.net no puede simplemente "reescribir la url" sino crear manejadores personalizados para varias solicitudes. El enrutamiento de asp.net requiere, al menos, asp.net sp1.

Lo básico para un enrutamiento simple es agregar algunos controladores de ruta en Application_Start incluso dentro del archivo 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")); }