2012-03-15 2 views
3

Я получаю сообщение об ошибке в следующей строке кода: Ссылка на объект не установлена ​​в экземпляр объекта.Почему я получаю эту ошибку NullReferenceException при тестировании на null?

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

Полный блок кода:

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

Почему в тесте на нуль, я получаю эту ошибку?

enter image description here

+19

Скорее всего, 'Session' сам по себе является' null'. –

+0

Где именно работает этот код? Это может дать нам понять, почему Session имеет значение null ... – greg84

+0

Это в веб-службе ASMX или WCF? –

ответ

4

Поскольку сам sessionn объект пустой

я думаю, что вы делаете использование веб-сервиса, что является причиной, почему сеанс является недействительным * проверка

это aricle, если вы используете сессии в WebService :Using Session State in a Web Service

+0

Вы действительно правы. Это веб-сервис. Думаю, мой следующий вопрос: можно ли использовать сеанс в веб-службе? Это для другой темы. Благодарю. – Kevin

+0

@Kevin - проверьте ссылку, прикрепленную мной, разрешите вашу эмиссию –

10

Ваше if утверждение неправильный путь вокруг. Вы пытаетесь использовать значение, если оно равно null.

Изменить это:

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

к этому:

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

Я бы исправить это первый, и посмотреть, если это решит проблему.

Исключение исходя из этого конкретной линии может быть, потому что:

  • Переменная Session равна нулю - вы можете проверить это в отладчике.
  • Скомпилированный код отличается от исходного кода, который вы используете для отладки. Попробуйте очистить и перестроить.
+1

+1 Хорошее место, но это не вызвало бы исключения на этой конкретной линии. –

+1

Вы уверены, что Адам? Похоже, он используется в блоке else для меня ... – greg84

+0

@ greg84 Да, в другом, но любопытно, почему исключение сообщается в 'if', следовательно, я исправил« на этой конкретной строке ». –

Смежные вопросы