Я немного новичок в ASP / C #, и у меня возникла проблема (возможно, простая) с переменными сессий. В моем проекте есть Site.Master, в котором переменные сеанса задаются в методе Page_Load следующим образом:
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;
}
}
Это работает. Если я выбрасываю переменную сеанса UserGroups в метку или что-то в этом методе, она отображает содержимое переменной правильно.
Итак, моя проблема лежит на другой странице (скажем, default.aspx), когда я пытаюсь получить доступ к той же переменной сеанса. В методе Page_Load другой страницы я пытаюсь сделать это:
protected void Page_Load(object sender, EventArgs e)
{
string GroupList = HttpContext.Current.Session["UserGroups"].ToString();
//some code with the variables here
}
Это всегда происходит с ошибкой «Ссылка на объект не установлена на экземпляр объекта». ошибка. Я пытаюсь получить неверную переменную Session? Я пробовал
string GroupList = Session["UserGroups"].ToString();
это также ошибки с той же ошибкой.
string GroupList = (string)(Session["UserGroups"]);
Это всегда возвращает пустую строку.
Что я делаю не так?
Спасибо!