【发布时间】:2016-02-24 23:27:26
【问题描述】:
请先阅读本文 请避免将我的问题标记为可能与“什么是 NullReferenceException 以及如何修复它”重复;我之前在一些较老的问题上已经阅读了所有这些内容。 NullReferenceException 不是这里的主要话题,我知道它们来自哪里。主要话题是为什么我只在服务器上而不是在本地得到这个异常。澄清后,请阅读以下内容:)
我有一个通过单击按钮弹出的表单。上面有一些常用的控件;因此,当我通过本地环境(Visual Studio 的 asp 服务器)运行它时,它显示良好,甚至在 Page_Load 上我也有许多指令可以使用数据库中的数据(它是一个编辑表单)加载表单的字段。
但是当我通过 IIS(从 Web 浏览器)在远程服务器上运行它时,我得到的不是显示的表单,而是 NullReferenceException。
所以我开始从我的 Page_Load 中评论指令,所以我可以放弃可能性,直到我达到让我的整个 Page_Load 方法评论的程度,严重的是 100%,这里不应该执行任何指令,但我仍然得到 NullReferenceException错误,堆栈跟踪如下所示:
堆栈跟踪:
[NullReferenceException: 对象引用未设置为 对象。] SisProEmp.editar_necesidad.Page_Load(对象发件人, EventArgs e) +1645 System.Web.UI.Control.LoadRecursive() +70
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +3177
“editar_necesidad”是表单的名称(html 页面)。
请注意,这仅在通过网络浏览器进行测试时发生,而不是在本地环境中发生。起初我以为它可能是服务器的 DateTime 格式,但我已经放弃了,因为正如我所提到的,Page_Load 现在什么都不执行,我什至看不到渲染的空控件。
【问题讨论】:
-
不,我知道 NullReferenceException 是什么,并且我知道一些修复它们的方法。问题在于,在这种特殊情况下,只有在通过服务器进行测试时才会引发异常。
-
这不是我第一次看到 SO 中的问题被标记为您链接的那个问题的“重复”,但这不是一件好事,即使您提出的问题和它提供的答案非常完整和结构化,它们并不涵盖所有情况。因此,在我的情况下,我既不想问“如何修复 NullReferenceException”,也不想问 NRE 是什么。我只需要帮助找出这个 NRE 的原因。
-
删除整个 Page_Load 方法并再次运行。如果它仍在异常堆栈中,则部署旧代码。这就是我的想法。还要部署 PDB,以便您获得文件和行号。无论如何都要部署 PDB。
-
Page_Load 旁边的 +1645 是本机代码的偏移量。如果你问我,方法很长,绝对不是空的。
标签: c# asp.net nullreferenceexception