【发布时间】:2010-08-16 14:11:59
【问题描述】:
这是我在这里的第一篇文章,所以请放轻松 :) 我在 ASP.Net 页面上遇到了一个奇怪的问题。将字符串文字分配给变量时,我收到对象未设置错误消息。这是我遇到的错误。
[NullReferenceException: 对象 引用未设置为 对象。]
Project.Page.Page_Load(对象发送者, EventArgs e) 在 C:\Project\Page.aspx.vb:10
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +2207
这是错误指向的代码。此片段中的最后一行是错误抱怨的第 10 行
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim teststring As String
teststring = "test"
似乎访问任何引用类型都失败了,即使它是在加载函数中本地声明的。当 Request.IsSecureConnection 对我无效时,我最初发现了问题。我最终发现我可以用上面的代码替换它并以同样的方式失败。
问题并不总是发生。它似乎是通过从 Visual Studio 发布更新触发的,或者当我白天回家并且服务器整夜闲置时触发。一两次应用程序池回收似乎可以清除它,并且页面正常运行。
任何帮助将不胜感激。我从事桌面开发已有几年了,但我对 Web 开发还很陌生。所以也许这很明显我配置错了。我目前在 IIS 6 上使用 .Net 4。
更新
我能够使用复制页面的建议来识别行,注释掉所有内容,然后一次取消注释一行。我的测试页开始给出错误的那一行是这一行
Dim StateName As String = State.Attribute(XName.Get("name")).Value
该代码位于 IEnumerable(of XElement) 上的 foreach 中。堆栈跟踪仍然指向字符串分配,但所有其他堆栈跟踪都在现场,所以我不认为这是一个糟糕的 pdb。
此外,当这次发生错误时,再循环应用程序池或停止和启动它都无法修复错误。通过将应用程序切换到不同的应用程序池,我终于让它再次工作。
【问题讨论】: