2012-03-15 62 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

相關問題