À l'aide de Application_BeginRequest pour la réécriture d'url
Jusqu'à présent nous avons été la réécriture d'URL à l'aide d'un custon page 404: l'url ne serait pas la carte de n'importe quel fichier dans le site, et nous avons configuré IIS pour envoyer erreur 404 vers une page aspx qui l'a redirigé l'url est l'URL est correcte.
Maintenant, nous voulons cesser d'utiliser les redirections, donc après la lecture de Scott Guthrie article sur la Réécriture d'Url, je veux utiliser le Application_BeginRequest Mondiale.asax. Le truc, c'est que beaucoup de nos url sont pas réécrit, et que vous pouvez obtenir à la bonne place, sans aucune intervention. Je suis inquiet que maintenant à chaque demande unique va avoir à passer par la méthode Application_BeginRequest (même les nations unies réécrit l'url), et j'ai peur que cela va ralentir le temps de chargement.
Qu'en pensez-vous? Est temps de chargement d'un problème lors de l'utilisation de Application_BeginRequest?
OriginalL'auteur Lea Cohen | 2008-12-01
Vous devez vous connecter pour publier un commentaire.
Chaque demande passe par Application_BeginRequest de toute façon.
Vous aurez besoin d'ajouter un peu de logique afin que les pages qui ont besoin d'être réécrit sont modifiées.
Qu'petit peu de logique ne sera pas très cher.
Je l'ai utilisé, et ne pas l'avis de la performance de la souffrance à tous.
OriginalL'auteur Joe Ratzer
Il y a très robuste de solutions là-bas si vous allez l'utiliser plus souvent et imiter le module Apache mod_rewrite, je l'aime parce que je l'ai utilisé et il m'a donné pas de problème:
http://www.codeplex.com/IIRF
ou:
http://urlrewriter.net/
http://www.managedfusion.com/products/url-rewriter/
Vous pouvez lire plus d'options dans ce post:
ASP.NET la Réécriture d'URL
Comme Josh dit que l'essentiel de l'article est:
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
Vous avez un ISAPI où vous pouvez centraliser beaucoup de choses avec de nombreuses de nombreuses options, par exemple, pour les domaines ainsi que pour les url. Coup d'oeil à ces postes: codinghorror.com/blog/archives/000797.html ou hanselman.com/blog/...
OriginalL'auteur netadictos
Juste une remarque pour les autres qui peuvent avoir de la difficulté. Assurez-vous d'avoir
dans votre site web.config
OriginalL'auteur adinas
Que l'article est un peu vieux... et il y a de meilleures approches dans le .NET framework maintenant. Ce qui est drôle, c'est que j'ai utilisé pour faire exactement ce que vous faites (détournement de la gestionnaire d'Erreur).
http://www.singingeels.com/Blogs/Nullable/2007/09/14/URL_ReWriting_The_Right_Way_Its_Easy.aspx
C'est ce que je pense que vous voulez faire maintenant. Oh, et à propos de la performance... qui ajoute environ 0,00001 secondes de votre temps.
OK, puis aller de l'avant avec le Guthrie choses... le gain de performance est encore incroyablement négligeable.
OriginalL'auteur Timothy Khouri
Scott Guthrie l'article est une bonne idée, mais je suis curieux de savoir pourquoi vous choisissez de le faire via le Global.asax au lieu d'utiliser un HttpModule comme il le suggère. Aussi, l'Asp.Net cycle de vie de page traverse chacun de ces événements dans le monde.asax de toute façon.
HttpModule les événements organisés chaque demande unique et tant que tu ne fais rien de fou dans votre logique, vous devriez être bon d'aller. Même les recherches en base de données dans la méthode Application_BeginRequest peut être atténué par une bonne mise en cache.
Et en cas de doute, écrire des informations sur le Trace afin de savoir exactement combien de temps votre routine prend. Je pense que vous trouverez que, par rapport à votre la plupart des opérations coûteuses (recherches en base de données), le temps sera négligeable.
OriginalL'auteur Josh