IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/VB.NET

logo
Sommaire > Navigation > Redirections
        Lorsque je fais Response.Redirect('page.aspx', false), il n'en tient pas compte, pourquoi?
        Lorsque je fais Response.Redirect, j'ai toujours une exception qui dit 'thread abandonné', pourquoi?
        Utiliser Server.Transfer ou Response.Redirect ?
        Comment améliorer les performances en empêchant d'envoyer toute la page lors d'une redirection ?



Lorsque je fais Response.Redirect("page.aspx", false), il n'en tient pas compte, pourquoi?
auteur : Didier Danse
Le deuxième paramètre signifie "faut-il interrompre le traitement en cours avant de faire la redirection?".

Ainsi, si le paramètre est false, il attend la fin du traitement de la page. Si un autre appel de la méthode Response.Redirect est présent c'est ce dernier qui sera pris en compte.

Un exemple qui code qui ne donnera pas le résultat souhaité:

					Try
					' Traitements
					Catch generatedExceptionVariable0 As Exception
					Response.Redirect("error.aspx", False)
					End Try
					Response.Redirect("ok.aspx", False)
				
En cas d'exception, on lui signale qu'il doit faire une redirection vers la page d'erreur à la fin du traitement et puis on lui dit de faire la redirection vers ok.aspx. Ce sera donc vers cette page que la redirection sera effectuée.


Lorsque je fais Response.Redirect, j'ai toujours une exception qui dit "thread abandonné", pourquoi?
auteur : Didier Danse
Le Response.Redirect permet de rediriger un utilisateur vers une autre page. On l'utilise, par exemple, de la manière suivante:

					If Session("Username") Is Nothing Then
					Response.Redirect("page.aspx")
					End If
				
Ce qui signifie que si l'utilisateur n'est pas connecté, il est redirigé vers la page spécifiée. Le résultat n'est pas toujours celui attendu car il se peut que la méthode lance une exception dont le message est "Le thread a été abandonné". ... A COMPLETER


Utiliser Server.Transfer ou Response.Redirect ?
auteur : Didier Danse
Response.Redirect envoie au navigateur client l'adresse de la page vers laquelle il doit être redirigé tandis que Server.Transfer permet d'exécuter le contenu d'une page sans pour autant avoir effectué un retour vers le client.
Dès lors, n'utilisez pas Server.Transfer si vous attachez de l'importance au fait que l'adresse présente dans votre navigateur soit la bonne.
A noter que si vous souhaitez utiliser Server.Transfer pour supprimer l'exception due au Response.Redirect, ce n'est à nouveau pas la bonne solution.
Préférez la méthode Execute(path, null, preserveForm) en ayant au préalable effectué un Response.Clear().


Comment améliorer les performances en empêchant d'envoyer toute la page lors d'une redirection ?
auteur : Didier Danse
En ajoutant

					 
Protected Overrides Sub Render(Output As HtmlTextWriter)
	If Not Response.IsBeingRedirected Then
		Base.Render(writer)
    End If
End Sub

				
Sur les pages que vous souhaitez. Bien entendu, si vous utilisez une master page, n'hésitez pas à placer cet élément dans la MasterPage, ce qui aura comme impact de réaliser l'opération dans chacune des pages.



Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.