J'ai un code de concept de preuve pour un module HTTP. Le code vérifie si un cookie existe, si c'est le cas, il récupère une valeur, si le cookie n'existe pas, il le crée et définit la valeur. Une fois ceci fait j'écris à l'écran pour voir quelle action a été prise (tout est gentil et simple). Ainsi, à la première demande, le cookie est créé; les demandes suivantes récupèrent la valeur du cookie.Module HTTP et cookies dans Sharepoint 2007
Lorsque je l'ai testé sur un site Web asp.net normal, tout fonctionne correctement - yay! Cependant, dès que je le transfère à SharePoint, quelque chose de bizarre se produit, le cookie n'est jamais sauvegardé - le code se branche toujours dans la création du cookie et ne prend jamais la branche pour récupérer la valeur - sans tenir compte des actualisations de pages ou des requêtes secondaires.
Heres le code ...
public class SwithcMasterPage : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
// register handler
context.PreRequestHandlerExecute += new EventHandler(PreRequestHandlerExecute);
}
void PreRequestHandlerExecute(object sender, EventArgs e)
{
string outputText = string.Empty;
HttpCookie cookie = null;
string cookieName = "MPSetting";
cookie = HttpContext.Current.Request.Cookies[cookieName];
if (cookie == null)
{
// cookie doesn't exist, create
HttpCookie ck = new HttpCookie(cookieName);
ck.Value = GetCorrectMasterPage();
ck.Expires = DateTime.Now.AddMinutes(5);
HttpContext.Current.Response.Cookies.Add(ck);
outputText = "storing master page setting in cookie.";
}
else
{
// get the master page from cookie
outputText = "retrieving master page setting from cookie.";
}
HttpContext.Current.Response.Write(outputText + "<br/>");
}
private string GetCorrectMasterPage()
{
// logic goes here to get the correct master page
return "/_catalogs/masterpage/BlackBand.master";
}