Question

Je prévoyais d'utiliser le routage d'URL pour une application Web Forms. Mais, après avoir lu quelques posts , Je ne suis pas sûr que ce soit une approche facile.

Est-il préférable d'utiliser le module de réécriture d'URL pour les formulaires Web? Mais ce n'est que pour IIS7. À l’origine, le routage d’URL était totalement découplé de Asp.Net MVC et il pouvait être utilisé pour les formulaires Web.

J'aimerais entendre vos suggestions.

Était-ce utile?

La solution

Il existe un excellent message ici à propos du les différences entre les deux d'un membre de l'équipe IIS.

Une mise en garde que je vous conseillerais est que pour WebForm, vous devez faire attention lorsque vous utilisez le routage. J'ai écrit un exemple d'implémentation de votre utilisation de routage avec WebForms qui répond à ces préoccupations et, espérons-le, aide à répondre à votre question.

Autres conseils

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

Réécriture d'URL IIS

Lorsqu'un client fait une demande au serveur Web pour une URL particulière, le composant de réécriture d'URL analyse l'URL demandée et la change en une autre URL différente sur le même serveur. Le composant de réécriture d'URL s'exécute très tôt dans le pipeline de traitement des demandes. Il est donc en mesure de modifier l'URL demandée avant que le serveur Web ne décide du gestionnaire à utiliser pour le traitement de la demande.

Réécriture d'URL IIS

Routage ASP.NET

Le routage ASP.NET est implémenté en tant que module de code managé qui se connecte au pipeline de traitement des demandes IIS à l’étape Resolve Cache (événement PostResolveRequestCache) et à l’étape Map Handler (PostMapRequestHandler). Le routage ASP.NET est configuré pour s'exécuter pour toutes les demandes adressées à l'application Web.

Routage des URL IIS

Différences entre la réécriture d'URL et le routage ASP.NET:

  1. La réécriture d'URL permet de manipuler les chemins d'URL avant que la demande ne soit traitée par le serveur Web . Le module de réécriture d'URL ne sait rien du gestionnaire qui finira par traiter l'URL réécrite. De plus, le gestionnaire de requêtes réel peut ne pas savoir que l'URL a été réécrite.
  2. Le routage ASP.NET est utilisé pour envoyer une demande à un gestionnaire en fonction du chemin d'URL demandé . Contrairement à la réécriture d'URL, le composant de routage connaît les gestionnaires et sélectionne celui qui doit générer une réponse pour l'URL demandée. Vous pouvez considérer le routage ASP.NET comme un mécanisme de mappage de gestionnaire avancé.

Outre ces différences conceptuelles, il existe certaines différences fonctionnelles entre la réécriture d'URL IIS et le routage ASP.NET:

  1. Le module de réécriture d'URL IIS peut être utilisé avec tout type d'application Web, y compris ASP.NET, PHP, ASP et des fichiers statiques. Le routage ASP.NET ne peut être utilisé qu'avec des 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 intégré ou classique soit utilisé pour le pool d'applications. Pour le routage ASP.NET, il est préférable d'utiliser le mode de pipeline intégré. Le routage ASP.NET peut fonctionner en mode classique, mais dans ce cas, les URL de l'application doivent inclure des extensions de fichier ou l'application doit être configurée pour utiliser " * " mappage de gestionnaire dans IIS.
  3. Le module de réécriture d'URL peut prendre des décisions de réécriture en fonction des noms de domaine, des en-têtes HTTP et des variables de serveur. Par défaut, le routage ASP.NET fonctionne uniquement avec les chemins d’URL et avec l’en-tête HTTP-Method.
  4. Outre la réécriture, le module de réécriture d'URL peut effectuer une redirection HTTP, émettre des codes d'état personnalisés et annuler des demandes. Le routage ASP.NET n'effectue pas ces tâches.
  5. Le module de réécriture d'URL n'est pas extensible dans sa version actuelle. Le routage ASP.NET est entièrement extensible et personnalisable.

Voulez-vous que les URL formatées soient une fabrique de pages de spawn?

ou voulez-vous faire disparaître le .aspx?

réécrire, permet de faire disparaître le fichier .aspx ou tout simplement pour ranger l’URL.

Le routage consiste à examiner une demande et à déterminer quel objet doit la gérer. Ils ressemblent beaucoup, phil haack a quelques bons articles sur le sujet.

dans iis6, isapiRewrite, est très bon

Je viens tout juste d'écrire mon propre système de réécriture pour améliorer l'apparence des URL sur mes sites. En gros, vous devrez écrire votre propre IHttpModule et ajoutez-le à votre web.config pour intercepter les requêtes entrantes. Vous pouvez ensuite utiliser HttpContext.Current.RewritePath pour modifier le contenu de votre message.

Vous voudrez également configurer votre site pour utilisez aspnet_isapi pour tout .

Vous découvrirez de nombreux petits problèmes en cours de route, comme d'essayer de travailler avec des pages qui utilisent "tails". sur eux (comme pour PageMethods), ou le cheminement des éléments de page et des publications, mais vous les traverserez.

Si vous êtes intéressé, je peux poster un lien vers le code et vous pouvez le vérifier. J'ai déjà résolu beaucoup de problèmes pour que vous puissiez le lire au fur et à mesure. Je suis sûr que beaucoup d'autres personnes ont également fait cela et que cela pourrait également être de bonnes ressources.

Vous pouvez consulter ma réponse à cette question. : ASP.NET - Construire votre propre système de routage . J'inclus quelques bonnes références pour vous aider à construire votre propre système de routage en utilisant soit la méthode de réécriture d'URL, soit le nouveau moteur de routage que vous pouvez utiliser et qui est issu du projet ASP.NET MVC.

Le projet Dynamic Data disponible avec .Net 3.5 SP1 montre un bon exemple d'implémentation de routage d'URL.

Pour la réécriture d'URL sur IIS, IIRF fonctionne dans IIS5, 6 et 7. Gratuit. Facile. Vite. Open source. Support d'expression régulière.

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