IIS URL Rewriting vs URL Routing

j'avais l'intention d'utiliser le routage url pour une application de formulaires Web. Mais, après avoir lu quelques messages , Je ne suis pas sûr si c'est une approche facile.

est-il préférable d'utiliser le URL Rewrite module pour les formulaires web? Mais, c'est seulement pour IIS7. Initialement, il y avait un buzz que le routage D'URL est totalement découplé de Asp.Net MVC et il pourrait être utilisé pour les formulaires web.

aimerait entendre toute suggestion..

48
demandé sur splattne 2008-09-18 08:45:55

7 réponses

Il y a un après beaucoup ici sur les différences entre les deux d'un membre de l'équipe IIS.

une mise en garde que je conseillerais est que pour les formulaires Web, vous devez être prudent en utilisant le routage. J'ai écrit un exemple de mise en œuvre de la façon dont vous utiliseriez routing avec les formulaires Web qui répond à ces préoccupations et qui, je l'espère, vous aidera à répondre à votre question.

25
répondu Haacked 2008-09-18 15:55:04

C'est le meilleur article que j'ai trouvé sur ce sujet: IIS Réécriture d'URL et ASP.NET routage par Ruslan Yakouchev.

IIS URL Rewriting

Lorsqu'un client fait une demande au serveur Web pour une URL particulière, le composant URL-rewriting analyse l'URL demandée et la modifie pour en faire une autre URL différente sur le même serveur. La composante de réécriture D'URL s'exécute très tôt dans le pipeline de traitement de la requête, de sorte qu'il est possible modifier L'URL demandée avant que le serveur Web ne prenne une décision sur le gestionnaire à utiliser pour traiter la requête.

IIS URL Rewriting

ASP.NET Routing

ASP.NET le routage est implémenté comme un module de code géré qui se branche dans le pipeline de traitement des requêtes IIS au stade de la résolution de Cache (événement PostResolveRequestCache) et au stade du Gestionnaire de cartes (PostMapRequestHandler). ASP.NET le routage est configuré pour exécuter pour toutes les demandes formulées à l'application Web.

IIS URL Routing

différences entre la réécriture D'URL et ASP.NET routage:

  1. réécriture D'URL est utilisé pour manipuler les chemins D'URL avant que la demande est traitée par le serveur Web . Le module de réécriture D'URL ne sait rien de ce que le gestionnaire va éventuellement traiter l'URL réécrite. En outre, à la demande réelle handler ne sait peut-être pas que L'URL a été réécrite.
  2. ASP.NET l'acheminement est utilisé pour envoyer une requête à un gestionnaire basé sur le chemin D'URL demandé . Contrairement à la réécriture D'URL, la composante routing connaît les gestionnaires et sélectionne le gestionnaire qui devrait générer une réponse pour L'URL demandée. Vous pouvez penser ASP.NET le routage comme une avancée gestionnaire-le mécanisme de mapping.

en plus de ces différences conceptuelles, il existe certaines différences fonctionnelles entre la réécriture D'URL de L'IIS et ASP.NET routage:

  1. le module IIS URL-rewrite peut être utilisé avec n'importe quel type d'application Web, qui comprend ASP.NET, PHP, ASP, et les fichiers statiques. ASP.NET le routage ne peut être utilisé qu'avec les applications Web basées sur .NET Framework.
  2. le module de réécriture D'URL IIS fonctionne de la même manière, que le mode de pipeline IIS soit intégré ou classique. pour l'application de la piscine. Pour ASP.NET pour l'acheminement, il est préférable d'utiliser le mode de pipeline intégré. ASP.NET le routage peut fonctionner en mode classique, mais dans ce cas, les URLs de l'application doivent inclure des extensions de fichiers ou l'application doit être configurée pour utiliser "*" handler mapping in IIS.
  3. le module de réécriture D'URL peut prendre des décisions de réécriture basées sur les noms de domaine, les en-têtes HTTP et les variables du serveur. Par défaut, ASP.NET le routage ne fonctionne qu'avec les chemins D'URL et la méthode HTTP tête.
  4. en plus de la réécriture, le module de réécriture D'URL peut effectuer une redirection HTTP, émettre des codes d'état personnalisés et annuler les requêtes. ASP.NET le routage n'exécute pas ces tâches.
  5. le module de réécriture D'URL n'est pas extensible dans sa version actuelle. ASP.NET le routage est entièrement extensible et personnalisable.
37
répondu splattne 2015-04-10 23:40:36

voulez-vous que les URL formatées soient une usine pour les pages de frai?

ou voulez-vous faire le .aspx?

réécriture, est pour faire le .aspx aller loin, ou tout simplement pour ranger l'url.

Le routage

sert à examiner une demande et à déterminer quel objet doit la traiter. Ils semblent similaires, phil haack a quelques bons articles sur le sujet.

dans iis6, isapiRewrite, est très bon

7
répondu DevelopingChris 2008-09-18 04:47:02

j'ai récemment écrit mon propre système de réécriture pour rendre les URLs sur mes sites regarder mieux. Fondamentalement, vous allez avoir besoin d'écrire votre propre IHttpModule et l'ajouter à votre web.config pour intercepter les requêtes entrantes. Vous pouvez alors utiliser le HttpContext.Actuel.Réécrivez le chemin pour changer ce que vous pointez.

vous voudrez aussi configurer votre site en utilisez aspnet_isapi pour tout .

vous découvrirez beaucoup de petits problèmes le long du chemin comme essayer de travailler avec des pages qui utilisent des" queues " sur eux (comme pour les méthodes de Pagemethodes), ou le cheminement des éléments de page et de former des postbacks, mais vous obtiendrez à travers eux.

si intéressé, je peux poster un lien vers le code et vous pouvez le vérifier. J'ai déjà réglé beaucoup de problèmes pour que vous puissiez les lire au fur et à mesure. Je suis sûr qu'il y a beaucoup d'autres personnes qui ont fait cela aussi bien qui pourrait être bon les ressources ainsi.

4
répondu Hugoware 2008-09-18 14:23:37

vous pouvez jeter un oeil à mon réponse à cette question: ASP.NET -la construction de votre propre système de routage . J'inclus quelques bonnes références pour aider à construire votre propre système de routage avec soit en utilisant la méthode de réécriture d'url ou le nouveau moteur de routage que vous pouvez utiliser qui est sorti de la ASP.NET projet MVC.

2
répondu Dale Ragan 2017-05-23 11:47:16

le projet de données dynamiques disponible avec .Net 3.5 SP1 montre un bon exemple d'implémentation de routage d'url.

0
répondu Norge 2008-09-18 04:48:56

Pour la Réécriture d'URL sur IIS, IIRF travaille dans IIS5, 6, 7. Gratuit. Facile. Rapide. L'Open Source. Support d'expression régulier.

0
répondu Cheeso 2009-03-09 07:15:04