271 votes

Server.Transfer vs Response.Redirect

Quelle est la différence entre et ?

  • Quels sont les avantages et les inconvénients de chacun ?
  • Quand est-on appropriées sur l’autre ?
  • Quand est un pas approprié ?

241voto

CMS Points 315406

Response.Redirect envoie simplement un message vers le bas pour le navigateur (HTTP 302) .

Server.Transfer arrive sans les connaître quoi que ce soit du navigateur, le navigateur demande une page, mais le serveur retourne le contenu d’un autre.

102voto

Christian Payne Points 3526

``vous enverra vers une nouvelle page, mettez à jour la barre d’adresse et l’ajouter à l’historique du navigateur. Votre navigateur vous pouvez cliquer sur retour.

``ne change pas l’adresse bar, vous ne pouvez pas riposter.

Je vais utiliser `` quand je ne veux pas l’utilisateur de voir où je vais. Parfois sur un « chargement » de type page.

Sinon, je vais utiliser toujours `` .

75voto

TStamper Points 17163

Pour être Bref: Response.Redirect indique simplement le navigateur pour visiter une autre page. Server.Transfer permet de réduire les demandes de serveur, garde l'URL de la même et, avec un peu de bug-bashing, vous permet de transférer de la chaîne de requête et de forme variables.

Chose que j'ai trouvé et d'accord avec (source):

Server.Transfer est similaire en ce qu'elle renvoie l'utilisateur vers une autre page avec une instruction telle que Server.Transfer("WebForm2.aspx"). Cependant, la déclaration a un certain nombre d'avantages et d'inconvénients.

Tout d'abord, le transfert vers une autre page à l'aide d' Server.Transfer préserve les ressources du serveur. Au lieu de dire que le navigateur redirection, il modifie simplement le "focus" sur le serveur Web et les transferts de la demande. Cela signifie que vous n'obtenez pas tout à fait autant de HTTP les demandes à venir à travers, ce qui soulage la pression sur votre Serveur Web et votre vitesse d'exécution des applications.

Mais attention: parce que le "transfert" le processus peut travailler uniquement sur les les sites en cours d'exécution sur le serveur; vous ne pouvez pas utiliser Server.Transfer envoyer l'utilisateur vers un site externe. Seulement Response.Redirect peut le faire.

Deuxièmement, Server.Transfer conserve l'original de l'URL dans le navigateur. Cela peut vraiment aider à rationaliser les données techniques d'entrée, même si elle peut faire de confusion lors du débogage.

Ce n'est pas tout: L' Server.Transfer méthode a aussi une deuxième le paramètre"preserveForm". Si vous affectez True, à l'aide d'une instruction comme l' Server.Transfer("WebForm2.aspx", True), la requête existante chaîne et de toute forme de variables seront toujours disponibles à la page que vous transférez.

Par exemple, si votre WebForm1.aspx dispose d'un contrôle de zone de texte appelée TextBox1 et vous avez transféré à WebForm2.aspx avec le preserveForm paramètre est défini sur True, vous seriez en mesure de récupérer la valeur de la page originale contrôle de zone de texte par le référencement Request.Form("TextBox1").

37voto

SoftDev Points 169

Response.Redirect() doit être utilisée lorsque:

  • nous voulons rediriger la demande vers des simples pages HTML sur notre serveur ou sur un autre serveur web
  • nous ne nous soucions pas engendrent des allers-retours vers le serveur à chaque requête
  • nous n'avons pas besoin de préserver la Chaîne de Requête et de Forme Variables à partir de la demande initiale
  • nous voulons que nos utilisateurs d'être en mesure de voir la nouvelle URL redirigée où il est redirigé dans son navigateur (et être en mesure de créer un signet si nécessaire)

Server.Transfer() doit être utilisée lorsque:

  • nous voulons transfert actuel de demande de page à l'autre .page aspx sur le même serveur
  • nous voulons préserver les ressources du serveur et éviter les allers-retours inutiles pour le serveur
  • nous voulons préserver la Chaîne de Requête et de Forme Variables (en option)
  • nous n'avons pas besoin de montrer la vraie URL où nous avons redirigé la demande dans les utilisateurs d'un Navigateur Web

Pour trouver des informations plus détaillées à ce sujet, vous pouvez visiter aspdotnetfaq.

28voto

Canavar Points 29161

Response.Redirect page de redirection vers une autre page après première page arrive au client. Si le client sait la redirection.

Server.Transfer stoppe l’exécution courante de la page. Client ne connaît pas la redirection. Il vous permet de transférer les variables de chaîne et formulaire de requête.

Donc, cela dépend de vos besoins pour choisir quel est le meilleur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X