Je suis quelque peu novice en ASP / C# et j'ai un problème (probablement simple) avec les variables de session. Mon projet possède un Site.Master dans lequel les variables de session sont définies par la méthode Page_Load de la manière suivante :
protected void Page_Load(object sender, EventArgs e)
{
if ((Session)["UserID"]==null || (Session)["UserID"].ToString() == "")
{
(Session)["UserID"] = HttpContext.Current.User.Identity.Name.ToString();
SqlDataReader dr = Sprocs.GetPermissionGroups();
string groupList = "";
while (dr.Read())
{
if (groupList != "")
{
groupList = groupList + "|" + dr["WG_Group"].ToString();
}
else
{
groupList = dr["WG_Group"].ToString();
}
}
dr.Close();
if (groupList != "")
{
(Session)["UserGroups"] = groupList;
}
}
Ça marche. Si je transfère la variable de session "UserGroups" vers une étiquette ou autre dans cette méthode, le contenu de la variable s'affiche correctement.
Mon problème se situe donc dans une autre page (disons default.aspx) lorsque j'essaie d'accéder à cette même variable de session. Dans la méthode Page_Load de l'autre page, j'essaie de faire ceci :
protected void Page_Load(object sender, EventArgs e)
{
string GroupList = HttpContext.Current.Session["UserGroups"].ToString();
//some code with the variables here
}
Cela échoue toujours avec une erreur "Object reference not set to an instance of an object". Est-ce que je me trompe dans la variable Session ? J'ai essayé
string GroupList = Session["UserGroups"].ToString();
cela donne également lieu à la même erreur.
string GroupList = (string)(Session["UserGroups"]);
Cela renvoie toujours une chaîne vide.
Qu'est-ce que je fais de mal ?
Gracias.