"response.redirect" et "server.transfer" permettent de transférer l'utilisateur d'une page à une autre pendant l'exécution de la page. Mais la façon dont ils effectuent ce transfert / redirection est très différente.
Dans le cas où vous êtes un mec visuel et que vous aimeriez voir une démonstration plutôt qu'une théorie, je suggère de voir la vidéo facebook ci-dessous qui explique la différence de manière plus démonstrative.
https://www.facebook.com/photo.php?v=762186150488997
La principale différence entre eux est de savoir qui effectue le transfert. Dans "response.redirect", le transfert est effectué par le navigateur tandis que dans "server.transfer", il est effectué par le serveur. Essayons de comprendre cette déclaration de manière plus détaillée.
Dans "Server.Transfer", voici la séquence du transfert: -
1.L'utilisateur envoie une demande à une page ASP.NET. Dans la figure ci-dessous, la demande est envoyée à "WebForm1" et nous aimerions naviguer vers "Webform2".
2. Le serveur commence à exécuter "Webform1" et le cycle de vie de la page démarre. Mais avant la fin du cycle de vie de la page, «Server.transfer» arrive à «WebForm2».
3. L'objet de page "Webform2" est créé, le cycle de vie complet de la page est exécuté et la réponse HTML de sortie est ensuite envoyée au navigateur.
Alors que dans "Response.Redirect" ce qui suit est la séquence d'événements pour la navigation: -
1.Le client (navigateur) envoie une demande à une page. Dans la figure ci-dessous, la demande est envoyée à "WebForm1" et nous aimerions naviguer vers "Webform2".
2.Le cycle de vie de "Webform1" commence à s'exécuter. Mais entre le cycle de vie "Response.Redirect" se produit.
Maintenant, plutôt que de faire une redirection par le serveur, il envoie une commande HTTP 302 au navigateur. Cette commande indique au navigateur qu'il doit lancer une demande GET sur la page "Webform2.aspx".
4.Browser interprète la commande 302 et envoie une demande GET pour "Webform2.aspx".
En d'autres termes, "Server.Transfer" est exécuté par le serveur tandis que "Response.Redirect" est exécuté par thr browser. "Response.Redirect" a besoin de deux requêtes pour faire une redirection de la page.
Alors, quand utiliser "Server.Transfer" et quand utiliser "Response.Redirect"?
Utilisez "Server.Transfer" lorsque vous souhaitez parcourir les pages qui résident sur le même serveur, utilisez "Response.Redirect" lorsque vous souhaitez naviguer entre les pages qui résident sur un serveur et un domaine différents.
Vous trouverez ci-dessous un tableau récapitulatif qui met en évidence les différences et dans quel scénario utiliser.