会话中的对象引用错误

时间:2013-12-20 10:06:25

标签: c# asp.net webforms

我收到错误:

  

对象引用未设置为对象的实例。

当我尝试获取会话的值时,它会出错。会话的值为null但我已经尝试测试它以检查它是否为null,并且在if语句中它仍然总是因此错误而失败。

string test;
if (Session["CustType"].ToString() != null || 
    Session["CustType"].ToString() != String.Empty)
{
   test = Session["CustType"].ToString();
   txtCustomerType.Text = test;
}

错误发生在此代码的第二行。我只是不知道该怎么做,因为即使我试图检查它是否为空,我也无法做任何事情。

7 个答案:

答案 0 :(得分:5)

您需要检查以下内容。删除ToString(),因为在null上调用ToString()会给出对象引用错误。

Session["CustType"] != null

答案 1 :(得分:1)

使用

(!String.IsNullOrEmpty(Session["CustType"]))

答案 2 :(得分:0)

你应该检查:

Session["CustType"] != null

在使用Session["CustType"].ToString()之前,因为如果它为null,则您尝试在空对象上调用ToString()

最简洁的代码可能是:

var test = Session["CustType"] as string;
if (!string.IsNullOrEmpty(test))
{
    txtCustomerType.Text = test;
}

答案 3 :(得分:0)

首先检查null,然后调用ToString

var obj = Session["CustType"];
if (obj  != null && 
    !string.IsNullOrEmpty(obj.ToString()))
{
   txtCustomerType.Text = obj.ToString();
}

答案 4 :(得分:0)

要在对象上使用ToString(),它不能为空。你有... ..

Session["CustType"].ToString() != null

您需要将其替换为......

Session["CustType"] != null

答案 5 :(得分:0)

可能是因为您正在引用无法访问的表中的对象。使用断点调试代码,并检查测试变量是否在异常时分配给它。如果保持的表的计数为0,则将确认该问题。

答案 6 :(得分:0)

你在检查空值时从会话中删除了tostring()

使用此

if (Session["CustType"] != null && 
    Session["CustType"].ToString() != string.Empty)

代替

if (Session["CustType"].ToString() != null &&
    Session["CustType"].ToString() != String.Empty)