与会话数据集一起使用时出现对象引用错误

时间:2012-10-12 10:41:12

标签: c# asp.net

我上周一直在使用下面的代码,它的工作没有问题,然后由于某种原因今天早上它的投掷:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

我的代码:

DataSet icanData = (DataSet)HttpContext.Current.Session["icanDataSession"];
if (!(icanData == null))
{
     return icanData;
}

我使用HttpContext.Current.Session的原因是因为它在一个类中运行。

4 个答案:

答案 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?