Pregunta

Miré varios reescritores 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 visto:

  • ThunderMain URLReescritor:utilizado en un proyecto anterior, no tenía la flexibilidad/rendimiento que buscábamos
  • Mapeador de URL de Ewal: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 adicionales incluidas en las expresiones regulares de reemplazo cambian un poco la sintaxis estándar de expresiones regulares de .Net.
  • Reescritor de URL de Fusion administrado:Encontré este en un Pregunta anterior en el desbordamiento de la pila, pero aún no lo he probado; según la sintaxis del ejemplo, no parece poder editarse a través de web.config
¿Fue útil?

Solución

+1 UrlRewritingNET.URLRewrite: ¡se utiliza en varios cientos de servicios/portales/sitios en un solo cuadro sin problemas durante años!(@Jason: de ese estás hablando, ¿verdad?)

y también usé URLRewriter.NET en un sitio personal y lo encontré, ah, interesante.@travis, tienes razón sobre el cambio de sintaxis, pero una vez que te acostumbras, es bueno.

Otros consejos

Está System.Web.Routing que se acaba de lanzar con .NET 3.5.

Puedes 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 están asignadas.

Si estuviera comenzando un nuevo proyecto web ahora, consideraría usar MVC desde cero.Utiliza URL reescritas como estándar.

IIS 7 tiene una Módulo de reescritura de URL que es bastante capaz y se integra bien con IIS.

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 mucho.

He tenido una buena experiencia con Filtro de reescritura ISAPI de Ionic que es muy similar a ISAPI_Rewrite, excepto que es gratuito.Ambos están modelados a partir de mod_rewrite y son filtros ISAPI, por lo que no puede administrarlos en código ya que debe configurarlos en IIS.

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

Razón:UrlRewritingNet requiere que su modo de grupo de aplicaciones sea Clásico y NO integrado.Esto no es óptimo tampoco, su proyecto parece muy muerto que los últimos 2 años.

acabo de instalar Reescritura 3 de ISAPI de Helicon.Funciona exactamente como htaccess.Lo estoy investigando hasta ahora.

solía Reescritura de URL .NET y proxy inverso con gran éxito.Está casi a la par con mod_rewrite y utiliza casi todas las mismas sintaxis.El propietario del proyecto es extremadamente servicial y amigable y el producto funciona muy bien.Esta joya proporciona funciones de reescritura y proxy, que muchas soluciones no ofrecen.En mi opinión, vale la pena echarle un vistazo.

+1 para UrlRewritingNet.UrlRewrite también, pero ¿por qué siempre necesito terminar mi URL con .aspx?Creo que debería mejorarse un mejor compañero de expresión regular.

¿Por qué siempre tengo que terminar con aspx en virtualURL localhost/Products/Beverages.aspx", "localhost/Products/Condiments.aspx"?Solo quiero escribir localhost/Productos/Bebidas", "localhost/Productos/Condimentos" que se parecen a la ruta MVC.

Este Uno se ve bien pero no funciona para mi sitio.Todavía no puedo entenderlo.

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

Lo básico que debe hacer para que funcione una ruta 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"));

        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top