Faire suivre les paramètres GET

Résolu
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 - 21 avril 2009 à 16:01
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 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];
}

}



Nico

5 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 avril 2009 à 08:55
Bonjour,

Pourquoi ne pas utiliser les cookies ? sinon configurer un sous domaine (pointant vers le memes site IIS) pour l'autre site ?

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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 ?

<hr />Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
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.

Faut que j'arrete le dev ? :)
.
A+

Nico
0
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
23 avril 2009 à 03:12
P1 c'est si compliqué que ca a faire ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
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.

Merci

Nico
0
Rejoignez-nous