Bonjour,
Si on appel la page d'accueil de mon site avec un paramètre Get, je dois le faire suivre sur tous les liens du site.
Ce parametre doit durer meme si la session tombe.
Pour eviter de me taper toutes les url de mon site je suis parti sur la solution d'une classe implémentant IHttpModule. Et se basant sur l'UrlRefferer
- Server.Transfert() transmet les paramètres postés mais ne fait pas apparait le paramètre Get ajouté (utilisation l'url refferer pour le liens suivant)
- Response.Redirect() ajoute bien le paramètre GET mais pas les données postées...
Si quelq'un avait une idée qui fonctionne cela me sauverait d'un chercher / remplacer sur une centaine de page....
Voici le code que j'utilise
Merci
<code>
publicclassContextTrackerHttpModule : IHttpModule
{
publicvoid Init(HttpApplication context)
{
context.PreRequestHandlerExecute += newEventHandler(HttpApplication_PreRequestHandlerExecute);
} privatevoid HttpApplication_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication oApplication = (HttpApplication)sender;
IHttpHandler oHandler = oApplication.Context.Handler;
if (oHandler isPage)
{
Page oPage = (Page)oHandler;
oPage.PreInit += newEventHandler(AllPage_PreInit);
}
}
privatevoid AllPage_PreInit(object sender, EventArgs e)
{
// Lecture de la page
Page oPage = (Page)sender;
HttpRequest oRequest = oPage.Request;if (oRequest.UrlReferrer != null)
{
// Lecture du context dans l'url ou l'url pr,c,dente
string sCurrentContext = GetUriParamValue(oRequest.Url, "ctx");
string sReferrerContext = GetUriParamValue(oRequest.UrlReferrer, "ctx");
if (!string.IsNullOrEmpty(sReferrerContext) && string.IsNullOrEmpty(sCurrentContext))
{
oPage.Server.Transfer(oRequest.Url.AbsolutePath + "?ctx=" + sReferrerContext, true);
}
}
}
privatestring GetUriParamValue(Uri uri, string prmName)
{
NameValueCollection oPrms = HttpUtility.ParseQueryString(uri.Query);
return oPrms[prmName];
}
}</code>
Nico