我上周一直在使用下面的代码,它的工作没有问题,然后由于某种原因今天早上它的投掷:
System.NullReferenceException:未将对象引用设置为对象的实例。
我的代码:
DataSet icanData = (DataSet)HttpContext.Current.Session["icanDataSession"];
if (!(icanData == null))
{
return icanData;
}
我使用HttpContext.Current.Session
的原因是因为它在一个类中运行。
答案 0 :(得分:1)
看起来Session["icanDataSession"];
已丢失。
你的代码在哪里设置?也许任何最初存储在IIS中的会话都已通过App Pool回收丢失。
答案 1 :(得分:0)
在将会话对象转换为数据集
之前,检查会话为空if(HttpContext.Current.Session["icanDataSession"]=!null)
{
DataSet icanData = (DataSet)HttpContext.Current.Session["icanDataSession"];
if (!(icanData == null))
{
return icanData;
}
}
else
{
return new Dataset();
}
答案 2 :(得分:0)
我认为,如果这个代码是由aspx.cs调用的,那么它将正常工作。但是如果任何无状态服务调用它,那么它会在您报告时抛出错误。 最好检查一下 if(HttpContext.Current!= null) 第一..
答案 3 :(得分:0)
您说您在ASPX文件的顶部调用了public static DataSet IcanData()
。而是从Page_Load
事件中调用该方法。在您访问会话的时间点,它将无法使用。
有关会话可以为空的原因的信息可以在这个问题中找到:What should I do if the current ASP.NET session is null?