C# 为什么在测试null时收到此NullReferenceException错误?
我在以下代码行收到一个错误:对象引用未设置为对象的实例C# 为什么在测试null时收到此NullReferenceException错误?,c#,asp.net,web-services,C#,Asp.net,Web Services,我在以下代码行收到一个错误:对象引用未设置为对象的实例 if (Session["AutoCompleteCustomersPhone"] != null) 完整的代码块: if (Session["AutoCompleteCustomersPhone"] != null) earchCustomerPhone = true; else { searchCustomerPhone = bool.Parse(Session["AutoCompleteCustome
if (Session["AutoCompleteCustomersPhone"] != null)
完整的代码块:
if (Session["AutoCompleteCustomersPhone"] != null)
earchCustomerPhone = true;
else
{
searchCustomerPhone =
bool.Parse(Session["AutoCompleteCustomersPhone"].ToString());
}
为什么在null测试中,我会收到这个错误
你的
if
语句是错误的。如果该值为null,则尝试使用该值
更改此项:
if (Session["AutoCompleteCustomersPhone"] != null)
为此:
if (Session["AutoCompleteCustomersPhone"] == null)
我会先解决这个问题,看看这是否能解决问题
来自该特定行的异常可能是因为:
变量为空-您可以在调试器中验证这一点Session
- 编译后的代码与用于调试的源代码不同。尝试清理和重建
- 因为sessionn对象本身为空
我认为您正在使用webservice,这就是会话为空的原因*
如果您在Web服务中使用会话,请检查此选项:最有可能的是,
会话本身为null
。此代码具体在哪里运行?它可能会给我们一个关于会话为空的线索……这是在ASMX web服务中还是在WCF中?+1很好,但这不会导致在这一行出现异常。@greg84在else中是的,但奇怪的是为什么在if
中报告异常,因此我修改了“在这一行”。这就是为什么使用“not”编写if语句的原因逻辑会让人陷入麻烦@马克是正确的,你的if语句是反向的。我最初尝试过这个,但失败了。所以我换成了!=当这不起作用时,我发布了问题。谢谢你@Kevin切换它只会使代码在逻辑上不正确。发生异常时,您可以查看当前在范围内的每个变量中的值。如果其中任何一个为null,则该值将声明为null。检查会话对象。您确实是正确的。这是一个网络服务。我想我的下一个问题是,是否可以在web服务中使用会话?不过,这是另一个话题。谢谢。@Kevin-查看我粘贴的文章链接,解决您的问题