我對ASP/C#有些新鮮感,並且遇到會話變量的問題(可能很簡單)。我的項目有一個Site.Master,會話變量在Page_Load方法下設置,如下所示:ASP/C#會話變量 - 對象引用未設置爲對象的實例
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"]);
這總是返回一個空字符串。
我在做什麼錯?
謝謝!
你打到第二頁之前的第一頁? – 2011-12-29 16:05:00
你在web.config中設置了什麼會話狀態? – 2011-12-29 16:06:59
第一頁應該先載入。我瞭解site.master和使用它的任何頁面的方式是,首先加載site.master,然後加載使用它的頁面。 至於web.config,在下我有\t \t –
Seril
2011-12-29 16:10:31