【问题标题】:Session State Not Available In This Context - In Global.asax会话状态在此上下文中不可用 - 在 Global.asax
【发布时间】:2012-10-30 06:08:13
【问题描述】:

我收到“会话状态在此上下文中不可用”错误。

错误嵌套在 Global.asax 文件中多个方法的 sender 参数中:

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Session_Start
  • Application_Error

错误发生在第一个页面加载(以及之后的所有页面加载)。

我在项目中添加了一个全新的空白页面 WebForm1.aspx,并将其作为我的起始页面。

您会认为空白页面不会出错。据我所知,在加载空页面时,没有执行我的代码。但我仍然收到会话状态错误。

我的项目运行良好。不显示错误页面。任何时候都没有不正确的行为。

但是这个会话错误出现在我当前项目的 sender 参数中的事实让我很困惑。此错误不会在空白的新项目中生成。

我当前项目中出现此错误的原因可能是什么?

如何追踪错误发生的位置?我无法在 底层 的 ASP.NET 代码中设置断点。或者我可以吗?

这是我的会话配置:

<pages enableSessionState="true" />
<sessionState mode="InProc" cookieless="false" timeout="20" />

更新:

我刚刚发现一个全新的空白项目在 sender 对象中也有这个错误。它在 Application_BeginRequest 和 Application_AuthenticateRequest 方法中可见。但是空白项目不会像我的其他项目那样生成 Application_Error 事件。

【问题讨论】:

  • 周杰伦你得到这个问题的答案了吗?
  • 不确定我是否在多年前设法弄清楚了这一点。不知道为什么我接受了标记为答案的帖子,作为答案。从那以后我就继续前进了。

标签: session state global-asax


【解决方案1】:

“如果一棵树倒在森林里,周围没有人听到它,它会发出声音吗?”

不要在 Session 属性不可用的时候观看它。

【讨论】:

  • 我不是。在 Session_Start 事件触发后触发的 Application_BeginRequest 事件仍然显示错误。然后是触发的 Application_Error 事件。再次......加载空白页面时会发生此错误,您可以看到 Application_Start 中没有可能导致此错误的代码。
【解决方案2】:

您在周期中过早地请求会话状态。您需要在 Application_AcquireRequestState

中进行

【讨论】:

  • 我没有任何要求。在发送者对象中看到这个错误之前,我的代码没有被执行。请注意,列出的方法还包括 Application_Error 方法。肯定会产生错误。我不知道它是从哪里来的。
  • 这应该是答案。这就是我们在之前的任何事件中都没有获得 SessionState 的原因。
  • 谢谢,这解决了我在与 OP 完全相同的情况下的问题。 +1
猜你喜欢
  • 1970-01-01
  • 2011-10-19
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多