thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 2010
-
21 avril 2009 à 16:01
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 2010
-
23 avril 2009 à 11:40
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
public
class
ContextTrackerHttpModule :
IHttpModule
{
public
void Init(
HttpApplication context)
{
context.PreRequestHandlerExecute +=
new
EventHandler(HttpApplication_PreRequestHandlerExecute);
}
private
void HttpApplication_PreRequestHandlerExecute(
object sender,
EventArgs e)
{
HttpApplication oApplication = (
HttpApplication)sender;
IHttpHandler oHandler = oApplication.Context.Handler;
if (oHandler
is
Page)
{
Page oPage = (
Page)oHandler;
oPage.PreInit +=
new
EventHandler(AllPage_PreInit);
}
}
private
void 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);
}
}
}
private
string GetUriParamValue(
Uri uri,
string prmName)
{
NameValueCollection oPrms =
HttpUtility.ParseQueryString(uri.Query);
return oPrms[prmName];
}
}
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 avril 2009 à 23:36
Bonsoir,
je ne comprend pas ce que tu essayes de faire avec HttpModule, je ne comprend d'ailleurs pas le but de ce que tu essayes de faire.
Pourquoi ne pas conserver la variable en session ?
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 20103 22 avril 2009 à 10:56
Salut Cyril,
Le probleme :
J'ai un site qui fonctionne pour un client A.
Je dois faire des modifications visuels et fonctionnelles mineures pour un client B.
Les deux clients se connecterons sur le meme site. Je dois donc ajouter pour le 2eme client un code contextuel.
Session ? Non.
Si le client perd sa session, il doit conserver sont code contextuel pour revenir sur la bonne page d'accueil.
La solution que j'envisage...
Je pense stocker cette infos dans l'url ce qui m'oblige a me retaper tous les liens du site.
Ce que j'essai de faire avec HttpModule (mon code à progressé depuis) c'est de vérifier si il y a un code contextuel dans l'url appelante (Request.UrlReferrer), et si c'est le cas j'utilise RewritePath pour faire suivre le code contextuel.
Cela fonctionne pour les redirect maintenant mais pas pour les liens html de type (l'url affiché est celle avant modification par RewritePath, donc sans le code contextuel)...
Conclusion
Je ne sais pas si c'est la bonne solution, je suis full open a vos idées.
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 20103 23 avril 2009 à 11:40
Salut,
Etant court sur les délais j'ai utilisé le principe du contexte en get.
J'ai modifié mon gestionnaire de contexte (HttpModule) et il gère tout seul les liens Html.
Par contre pour les redirect coté serveur, je suis obligé d'appeler une méthode qui gère la présence du context
Dommage que je n'ai pas posé la question plus tot...
Les cookies c'est a tester mais je suis plus séduit par la création d'un sous domaine.