【问题标题】:What could cause this sporadic error in ASP.NET?什么可能导致 ASP.NET 中出现这种偶发错误?
【发布时间】:2012-02-09 03:30:41
【问题描述】:

在极少数情况下,当有人访问我的 ASP.NET 应用程序之一时,我会收到以下错误和堆栈跟踪:

错误:对象引用未设置为对象的实例。

Stacktrace:在 MyApp.MyDefaultPage.Page_Init(Object sender, EventArgs e) 在 System.Web.UI.Control.InitRecursive(Control NamingContainer) 在 System.Web .UI.Control.InitRecursive(Control NamingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

这里有几件事。 MyApp.MyDefaultPage 没有我自己定义的 Page_Init,所以没有额外的代码(我知道事件仍然会触发)。此外,在 Page_Init 事件中也没有可以运行的基类代码,所以我不知道发生这种情况的地方。

我唯一能收集到的就是我在 Application_Error 事件中有一个 Global.asax 异常处理程序代码,但是在访问任何对象之前我要做的第一件事是确保它们之前不是 Nothing尝试访问(以防止任何错误)。

有什么线索会导致这种情况发生吗?

【问题讨论】:

  • 能把页面的代码放上来吗?
  • Object reference not set to an instance of an object 可能是最常见的 ASP.NET 错误期。您最有可能尝试引用 null 对象的方法或属性。你的异常有内部异常吗?
  • 您检查过您的活动查看器吗?
  • @ivowilblo - 正如我所提到的,对于 StackTrace 指向的页面,没有可参考的代码。并且通过多种方法发布几百行绑定和可视化操作代码太多了,无法在此处发布
  • @Justin - 没有内部异常,我很清楚这个异常以及它的原因,正如我在原始帖子中提到的那样:“......但我之前做的第一件事访问任何对象是在尝试访问之前确保它们不是 Nothing(以防止任何错误)。"

标签: asp.net


【解决方案1】:

您是否在使用任何 Ajax 控件?

如果是这样,请确保您的 scriptmanager 标记是表单标记之后的第一项

还可以尝试为页面设置 EnableEventValidation="false"。

这可能是由于用户在页面完全加载之前与页面交互造成的。

【讨论】:

  • 如果这是问题所在,例外情况将是一致的。
  • 是的,我正在使用 AJAX 和 AJAX 控制工具包(来自 codeplex 的最新版本)。它在表单标记之后的母版页中的第一行:
    我不想随便设置 EnableEventValidation="false" 因为这会带来安全问题。但总的来说,我也想知道这是否是 AJAX 偶尔加载脚本的问题。
  • 正如我之前提到的 - 我不想随意设置 EnableEventValidation="false" 因为这会带来安全问题。但是,这方面没有任何活动,因此可能会将其标记为有时不加载的 AJAX 脚本之类的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2011-09-02
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多