我有一个存储在会话变量中的对象列表。但是当我检查以确保会话变量不为null时,它会给我一个NullReferenceException: Object reference not set to an instance of an object
。
if(Session["object"] == null) //error occurs here
{
Session["object"] = GetObject();
return Session["object"] as List<object>;
}
else
{
return Session["object"] as List<object>;
}
如何检查Session是否为空?
编辑:我也试过
if(Session["object"] != null)
答案 0 :(得分:6)
编辑:我也试过
if(Session["object"] != null)
请注意,修改中的代码不,检查Session
是否为空。如果它为null,则表达式Session["object"]
仍然会导致错误,因为这是在会话实例中搜索“对象”键 - 所以如果从逻辑上考虑它,您正在寻找未实例化对象中的键,因此空引用异常。因此,在检查Session
是否为空之前,您需要验证Session["object"]
是否已实例化:
if (Session != null)
{
if(Session["object"] == null)
{
Session["object"] = GetObject();
return Session["object"] as List<object>;
}
else
{
return Session["object"] as List<object>;
}
}
else
{
return null;
}
答案 1 :(得分:0)
您是否检查过Session != null
?在您的示例中,this.Session
和this.Session["Key"]
都可以返回null
,但您只检查后者。考虑Session
本身可能不存在的选项,因此您无法从中获取数据,但也无法写入数据。
答案 2 :(得分:0)
让你检查你的GetObject()方法......它可能会返回null ...
答案 3 :(得分:0)
检查if (!Session.ContainsKey("object"))
后尝试检查if (Session != null)
。如果这些检查都通过,那么Session["object"]
应该没问题。