Faire suivre les paramètres GET [Résolu]

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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
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
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
P1 c'est si compliqué que ca a faire ???
Messages postés
186
Date d'inscription
lundi 11 mars 2002
Statut
Membre
Dernière intervention
30 novembre 2010
2
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