2008-08-18 16 views
14

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

Éstos son los que he utilizado o se mire:

  • ThunderMain URLRewriter: se utiliza en un proyecto anterior, no bastante tener la flexibilidad/rendimiento que buscábamos
  • Ewal UrlMapper: se utiliza en un proyecto actual, pero la fuente parece ser abandonado
  • UrlRewritingNet.UrlRewrite: parece como una biblioteca decente, pero la gramática pobre de documentación me hace sentir incómoda
  • UrlRewriter.NET: este es mi favorito actual, tiene una gran flexibilidad, aunque las funciones extra bombeadas en las expresiones regulares de reemplazo cambian la sintaxis estándar .Net regex un bit
  • Managed Fusion URL Rewriter: Encontré este en previous question en desbordamiento de pila, pero aún no lo he probado, del ejemplo sintaxis, no parece ser editable a través de web.config

Respuesta

3

+1 UrlRewritingNET.URLRewrite: ¡utilizado en varios cientos de servicios/portales/sitios en una sola caja sin problemas durante años! (@Jason - ese es el que está hablando, ¿no?)

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.

+0

Tengo un problema con eso. lo que se necesitaba es redirigir al otro sitio. Por ejemplo: http://example.com/some3rdparty a http://somesite.com/with?alot&of¶meters Sólo por pequeña URL Es imposible hacer de la caja, es necesario que existan cambios en las fuentes. Así que he usado ManagedFusion – AlfeG

+0

También el nombre de la sección codificada "urlrewritingnet" fue una gran sorpresa T_T – AlfeG

+0

No es imposible. Solo requiere dedicación y definición. Me imagino que estás hablando de algo como lo siguiente? o simplemente destinationUrl = "somesite.com/with?alot & de & parameters"? Claro, hay una curva de aprendizaje, pero bueno, es una de las más exhaustivas que he usado. Routing y MVC nacen para usarse juntos, y ciertamente no lo ayudarán mejor en este tipo de situaciones. –

4

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

7

There's System.Web.Routing que acaba de lanzarse con .NET 3.5.

sólo puede utilizar Request.RewritePath() en una costumbre HttpModule

Yo prefiero usar una implementación IHttpHandlerFactory y tener un control total sobre todas las URL entrantes y donde se asigna a.

2

He usado UrlRewriting.NET anteriormente en un sitio de 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

2

He tenido una buena experiencia con Ionic's ISAPI Rewrite Filter que es muy similar a ISAPI_Rewrite, excepto gratis. 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.

1

He utilizado .NET URL Rewriter and 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.

3

IIS 7 tiene un URL Rewrite Module que es bastante capaz y se integra bien con IIS.

+0

+1 por ser nuevo skool! Esto es lo que uso Sin embargo, tenga cuidado si está acostumbrado a UrlRewritingNet.Rewrite, ya que Request.Url ahora es la página real en lugar de la solicitada. Ahora necesita Request.RawUrl para obtener la url que realmente se solicitó – BritishDeveloper

2

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.

+0

no es un problema en Windows 2008 R2, todos los sitios (más de 50) se ejecutan en grupos integrados con UrlRewritingNet.UrlRewrite – balint

0

+1 para UrlRewritingNet.UrlRewrite también, pero ¿por qué siempre tengo que 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/Condimentos "que se parecen a la ruta MVC.

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

+0

que terminan con el uso de '.aspx' a una limitación con IIS. De lo contrario, tendría que mapear '. *' Para usar aspnet_isapi.dll. Muchos proveedores de hosting no lo permiten y puede conducir a un rendimiento más pobre y algunas peculiaridades extrañas, como los PNG con el tipo de mime equivocado. – travis

0

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

Lo básico que debe hacer para que un enrutamiento simple funcione es agregar algunos manejadores de ruta en el 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")); 

     } 
Cuestiones relacionadas