C#说我的命名空间导致了一个NullReferenceException
本文关键字:一个 NullReferenceException 我的 命名空间 | 更新日期: 2023-09-27 18:00:25
所以我得到了可怕的"死亡黄屏"(这就是.NET人员所说的),并显示错误消息:
[NullReferenceException: Object reference not set to an instance of an object.]
好吧,没关系,我能理解,但错误引用了一行代码,上面写着:
<namespace1>.<namespace2>.XMLDohickey responseXML =
new <namespace1>.<namespace2>.XMLDohickey();
(为保护无辜者而模糊的名字(:)。
我可以很容易地看到后面的行Session[<value>].ToString();
是如何导致这个错误的,但我不明白它声称是由哪行引起的。
那么,是C#告诉了我错误的行号,还是命名空间实际上是null?
顺便说一句,在我公司的DEV和QA服务器上,这似乎在本地运行良好,但在我们客户的QA服务器上似乎失败了。。。
编辑
所以。。。这是交易。
显然,什么时候。NET崩溃,有时它会返回最后一个成功调用的行,而不是实际包含错误的行。在这种情况下,Session[<value>]
为空(为什么?不知道。"不应该发生")。
命名空间永远不能为null,它永远不会生成任何类型的运行时错误(以您描述它的方式)。所以你的空引用可能在会话[key]中。ToString(),或者XMLDoHickey的构造函数。在调用一个方法之前,我会考虑检查会话状态中的值是否存在。
您确定异常不是来自XMLDohickey构造函数内部吗?
您需要强制重新编译,并且可能还需要清除临时internet文件。
当源代码和二进制文件不同步时,行号和实际指令经常不匹配,导致异常,这里必须是这种情况,因为命名空间肯定不会导致空引用异常:)