【发布时间】:2015-06-04 14:30:36
【问题描述】:
我在 ASP.net 中有一些会话如下。在文件 Test.aspx.cs 中有一些会话
HttpContext.Current.Session["Id"] = obj.USER_MOD_ID;
HttpContext.Current.Session["Group"] = obj.GROUP_MOD_ID;
HttpContext.Current.Session["Region"] = obj.REGION_ID;
然后我创建了一些类,我想获得会话的价值。
首先,我创建一个类 MySession.cs
public class MySession
{
// private constructor
private MySession()
{
value_group = "Group";
//value_id = "Id";
//value_region = "Region";
}
// Gets the current session.
public static MySession Current
{
get
{
MySession session =(MySession)HttpContext.Current.Session["Group"];
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["Group"] = session;
}
return session;
}
}
// **** add your session properties here, e.g like this:
public string value_group { get; set; }
//public string value_id { get; set; }
//public string value_region { get; set; }
}
其次,我创建类 Test.cs 并且我想要获取会话的值
string value_group = MySession.Current.value_group.ToString();
//string value_id = MySession.Current.value_id.ToString();
//string value_region = MySession.Current.value_region.ToString();
但是出错了
Object reference not set to an instance of an object
谢谢大家。
【问题讨论】:
-
为什么要将
MySession分配给您的HttpContext.Current.Session["Group"]?您之前已经在其中设置了值,并且想要访问它。或者你没有?请描述一下你要在那里存储什么,obj.GROUP_MOD_ID是什么(是字符串)? -
@YeldarKurmangaliyev 代码看起来有些合理 - 围绕访问会话值的包装类 - 不确定为什么您发现该代码错误。我的猜测有 97% 的可能性 - OP 尝试在请求之外访问
HttpContext.Current(即在某些单元测试代码中)。 -
@AlexeiLevenkov 也许,我就是不明白。这就是为什么我问他一个问题。至于我,
value_group现在是从常量值“Group”分配的,MySession正在覆盖以前设置的obj.GROUP_MOD_ID值。我可能错了,但这不是会话值包装器的编写方式:) -
@YeldarKurmangaliyev 我看到了 - 可能将 OP 复制粘贴到随机样本中......看起来像是将 3 个字段打包到单个对象中并在会话状态中使用一个键来存储它的合理方法,但可能是您阅读了 OP 希望通过包装器从会话状态中读取单个值的帖子(
Current.value_region以将...Session["region"]转换为其类型...不清楚。 -
@YeldarKurmangaliyev 正是,正如 Alexei Levenkov 所说。你能给我一些建议吗?