如何解决对象Null错误?

时间:2012-07-05 05:46:19

标签: asp.net session object null

我有一种情况,我正在为会话分配一些价值。我有一种情况,即该代码重复调用。有时这个代码会抛出对象null的错误。当我为它赋值时,我不知道为什么会发生这种情况。我的代码是

  if (HttpContext.Current.Cache["Cache"] == null)
            {
                CreateChanhe();
                DataTable dtcache= HttpContext.Current.Cache["HNS Connection"] as DataTable; //CreateConnectString(CCMMUtility.Encryptdata(txtPin.Text));
                string sqlFilter = "Sp = '" + classses.DecryptString(HttpContext.Current.Request.Cookies["Cookies"].Values["sp"].ToString(), classses.SP) + "'";
                DataRow[] dr = dtcache.Select(sqlFilter);
                if (dr.Length > 0)
                {
                    String[] Con = new String[2];
                    Con[0] = dr[0][0].ToString();
                    Con[1] = dr[0][1].ToString();
                    sp= Con[1]; 
                    HttpContext.Current.Session["Name"] = dr[0][2].ToString();
                }
            }

当我尝试在调试它时“添加监视”时说“值”有一些值,但 HttpContext.Current.Session [“Name”] 为空。有些人可以告诉我为什么会这样。

实际上我正在创建一个缓存然后从该缓存中填充会话。这是基于我的要求。

2 个答案:

答案 0 :(得分:0)

我怀疑dr[0][2]为空,因此当您致电.ToString()时,您将获得NRE。

答案 1 :(得分:0)

那是HttpContext.Current是否为空?如果包含这样的空检查:

if (HttpContext.Current != null)
{
 if (HttpContext.Current.Cache["Cache"] == null)
            {
                CreateChanhe();
                DataTable dtcache= HttpContext.Current.Cache["HNS Connection"] as                        DataTable; //CreateConnectString(CCMMUtility.Encryptdata(txtPin.Text));
                string sqlFilter = "Sp = '" + classses.DecryptString(HttpContext.Current.Request.Cookies["Cookies"].Values["sp"].ToString(), classses.SP) + "'";
                DataRow[] dr = dtcache.Select(sqlFilter);
                if (dr.Length > 0)
                {
                    String[] Con = new String[2];
                    Con[0] = dr[0][0].ToString();
                    Con[1] = dr[0][1].ToString();
                    sp= Con[1]; 
                    HttpContext.Current.Session["Name"] = dr[0][2].ToString();
                }
            }
}