ASP / C#会话变量 – 未将对象引用设置为对象的实例
发布时间:2020-12-16 07:11:46 所属栏目:asp.Net 来源:网络整理
导读:我对ASP / C#有点新,我遇到了会话变量的问题(可能很简单).我的项目有一个Site.Master,其中会话变量在Page_Load方法下设置,如下所示: protected void Page_Load(object sender,EventArgs e) { if ((Session)["UserID"]==null || (Session)["UserID"].ToStrin
我对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"]); 这总是返回一个空字符串. 我究竟做错了什么? 谢谢! 解决方法
您在Page_Load方法中使用的语法我甚至不希望编译.无论如何,问题是您没有使用该键设置Session,因此它将返回null.当您在该null上调用ToString()时,您将获得异常.在你的第二个例子中:
string groupList = (string)(Session["UserGroups"]) 那就是将null转换为字符串,这会产生一个空字符串(因此不会导致异常). 你应该能够像这样重写你的Page_Load实现: string sessionUserId = Session["UserId"] as string; if(string.IsNullOrEmpty(sessionUserId)) { 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(); Session["UserGroups"] = groupList; } 然后,在稍后访问会话变量时,请执行以下操作: string userGroup = Session["UserGroups"] as string; 这是尝试将会话中的任何存储桶转换为字符串的安全方法.如果密钥不存在,或者该值不是字符串,则将为null.否则,您将从该哈希中获取字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.net – Orkut
- Asp.Net Session相关配置
- asp.net-mvc – StackExchange.Redis.IDatabase存在于两个d
- asp.net-mvc – 迷你探查器不显示ajax请求信息?
- asp.net – 用于修复表中的电话号码问题的SQL查询
- asp.net-mvc – Sitecore 7.5 MVC和HttpContext.Session.Ti
- 使用ASP.NET通过POST接收(和发送)XML
- asp.net-mvc – ASP.Net MVC – HTTP状态代码(即303,401,40
- asp.net-core – ASP.Net核心maxUrlLength
- asp.net – 从Web页面录制音频