Question

J'ai examiné plusieurs réécrivains d'URL pour ASP.Net et IIS et je me demandais ce que tout le monde utilisait et pourquoi.

Voici ceux que j’ai utilisés ou consultés :

  • ThunderMain URLRewriter:utilisé dans un projet précédent, n'avait pas tout à fait la flexibilité/performance que nous recherchions
  • Ewal UrlMapper:utilisé dans un projet en cours, mais la source semble être abandonnée
  • UrlRewritingNet.UrlRewrite:cela semble être une bibliothèque décente mais la mauvaise grammaire de la documentation me laisse mal à l'aise
  • UrlRewriter.NET:c'est mon préféré actuel, il a une grande flexibilité, bien que les fonctions supplémentaires introduites dans les expressions régulières de remplacement modifient un peu la syntaxe standard des expressions régulières .Net
  • Réécrivain d'URL Fusion géré:J'ai trouvé celui-ci dans un question précédente en cas de débordement de pile, mais je ne l'ai pas encore essayé, d'après l'exemple de syntaxe, il ne semble pas être modifiable via web.config
Était-ce utile?

La solution

+1 UrlRewritingNET.URLRewrite -- utilisé dans plusieurs centaines de services/portails/sites sur une seule boîte sans problème depuis des années !(@Jason – c'est de lui dont vous parlez, n'est-ce pas ?)

et j'ai également utilisé URLRewriter.NET sur un site personnel et je l'ai trouvé, ah, intéressant.@travis, vous avez raison sur la syntaxe modifiée, mais une fois que vous vous y êtes habitué, c'est bien.

Autres conseils

Il y a System.Web.Routing qui vient de sortir avec .NET 3.5.

Vous pouvez simplement utiliser Request.RewritePath() dans un HttpModule personnalisé

Je préfère utiliser une implémentation IHttpHandlerFactory et j'ai un contrôle total sur toutes les URL entrantes et sur l'endroit où elles sont mappées.

Si je démarrais un nouveau projet Web maintenant, j'envisagerais d'utiliser MVC à partir de zéro.Cela utilise des URL réécrites en standard.

IIS 7 a un Module de réécriture d'URL qui est assez performant et s'intègre bien à IIS.

J'ai déjà utilisé UrlRewriting.NET sur un site à très fort trafic - cela a très bien fonctionné pour nous.Je pense que les développeurs sont allemands, donc la documentation en anglais n'est probablement pas aussi bonne qu'elle pourrait l'être.Je le recommande vivement.

J'ai eu une bonne expérience avec Filtre de réécriture ISAPI d'Ionic qui est très similaire à ISAPI_Rewrite, sauf gratuit.Les deux sont calqués sur mod_rewrite et sont des filtres ISAPI, vous ne pouvez donc pas les gérer dans le code car vous devez les configurer dans IIS.

Je ne recommanderais pas UrlRewritingNet si vous êtes dans un environnement IIS7 Windows 2008.

Raison:UrlRewritingNet nécessite que votre mode pool d'applications = Classique et NON intégré.Ce n'est pas optimal également, leur projet semble très mort que les 2 dernières années.

je viens d'installer Réécriture ISAPI 3 d'Helicon.Fonctionne exactement comme htaccess.Je le creuse jusqu'à présent.

j'ai utilisé Réécrivain d'URL .NET et proxy inverse avec un grand succès.C'est presque à égalité avec mod_rewrite et utilise presque toutes les mêmes syntaxes.Le propriétaire du projet est extrêmement serviable et sympathique et le produit fonctionne très bien.Cette gemme fournit à la fois des fonctionnalités de réécriture et de proxy, que de nombreuses solutions n'offrent pas.OMI, ça vaut le détour.

+1 pour UrlRewritingNet.UrlRewrite également, mais pourquoi dois-je toujours terminer mon URL par .aspx ?Je pense qu'il devrait être amélioré avec un meilleur partenaire d'expression régulière.

Pourquoi dois-je toujours terminer par aspx dans virtualURL localhost/Products/Beverages.aspx", "localhost/Products/Condiments.aspx".Je veux juste taper localhost/Products/Beverages", "localhost/Products/Condiments" qui ressemble à la route MVC.

Ce on a l'air bien mais ça ne fonctionne pas pour mon site.Je n'arrive toujours pas à comprendre.

Le routage asp.net répond également aux exigences de réécriture d'URL, et même bien plus encore.Avec le routage asp.net, vous pouvez non seulement "réécrire l'URL", mais créer des gestionnaires personnalisés pour diverses requêtes.Le routage asp.net nécessite cependant au moins asp.net sp1.

La chose de base que vous faites pour qu'un routage simple fonctionne est d'ajouter quelques gestionnaires de route dans Application_Start, même dans le fichier 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"));

        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top