Server.Transfer vs. Context.RewritePath
Je sais qu'ils ont à la fois de ne pas changer l'URL que le client voit. Il n'y a rien en elles qui les rend l'un d'eux préférable par rapport à l'autre?
J'ai l'intention de l'utiliser dans le Application_BeginRequest Mondiale.asax, mais aussi régulièrement en page aspx.
source d'informationauteur Lea Cohen
Vous devez vous connecter pour publier un commentaire.
Je pense que
Context.RewritePath()
est la meilleure option.Raison:
Server.Transfer()
jette unThreadAbortException
à chaque fois. Le résultat de l'appelResponse.End()
.Pour plus de détails, lisez la suite MS articles:
Plus D'Informations:
Server.Transfer()
ne pas envoyer une redirection HTTP 302 commande commeResponse.Redirect()
ferait.Selon HttpContext.RewritePath sur MSDN
RewritePath()
est utilisé dans cookieless l'état de la session.Aussi, sur un sujet différent,
Server.Transfer()
etServer.Execute()
sont très différents:Server.Execute()
retourne le contrôle à la page initiale immédiatement après l'endroit où il a été appelé.Par Exemple:
De sortie:
Contexte.RewritePath Ayants droit interne d'une réécriture de chemin d'accès et permet l'URL qui est demandé à différer le chemin d'accès à la ressource. RewritePath est utilisé dans cookieless l'état de la session.
Alors Que Le Serveur.transfert transfère le contenu assemblés pour le traitement d'une page à une autre page .
Pour éviter l'exception renvoyée par le Serveur.Transfert, vous pouvez utiliser le Serveur.Exécuter. Les Deux Serveur.Le transfert et le Serveur.Exécuter NE délivrent PAS de 302 message HTTP. Seule Réponse.Rediriger les questions de cet en-tête et demande au navigateur d'aller vers la nouvelle destination, en prétendant qu'elle a été temporairement déplacé. Les Deux Serveur.Le transfert et le Serveur.Exécution vous permettent d'exécuter une autre page de service à la demande actuelle.