2012-03-15 43 views
3

我在以下代码行收到错误:对象引用未设置为对象的实例。为什么在测试null时收到此NullReferenceException错误?

if (Session["AutoCompleteCustomersPhone"] != null) 

的代码完全块:

if (Session["AutoCompleteCustomersPhone"] != null) 
    earchCustomerPhone = true; 
else 
{ 
    searchCustomerPhone = 
     bool.Parse(Session["AutoCompleteCustomersPhone"].ToString()); 
} 

为什么,在空测试,我会收到这个错误?

enter image description here

+19

很可能,'Session'本身是'null'。 – 2012-03-15 13:49:48

+0

这段代码到底在哪里运行?它可能会给我们一个线索,为什么会话是空的... – greg84 2012-03-15 13:58:16

+0

这是在一个ASMX Web服务,或WCF? – 2012-03-15 14:11:48

回答

4

因为sessionn对象本身无效

我认为你正在使用Web服务,这就是为什么会话为空*

检查这个aricle如果您在Web服务使用会话的理由:Using Session State in a Web Service

+0

你确实是对的。它是一个Web服务。我想我的下一个问题是可以在Web服务中使用Session吗?多数民众赞成在不同的话题。谢谢。 – Kevin 2012-03-15 13:58:59

+0

@Kevin - 查看我粘贴的文章链接解析你的issu – 2012-03-15 14:01:05

10

if说法是围绕走错了路。如果 null,则试图使用该值。

更改此:

if (Session["AutoCompleteCustomersPhone"] != null) 

这样:

if (Session["AutoCompleteCustomersPhone"] == null) 

我想解决这个问题第一,看看是否能解决这个问题。

具体线传来的例外可能是要么是因为:

  • Session变量为空 - 你可以在调试器中验证这一点。
  • 您的编译代码与您用于调试的源代码不同。尝试清洁和重建。
+1

+1好点,但是这不会在这个特定的线上造成异常。 – 2012-03-15 13:53:02

+1

你确定亚当?看起来像它在else块中用于我... – greg84 2012-03-15 13:53:16

+0

@ greg84是在别的,但很好奇为什么异常是在'if'中报告的,因此我修改了“在这个特定行上”。 – 2012-03-15 13:53:37

相关问题