可以访问会话状态的Global.asax事件

Sha*_*vii 10 asp.net session-state global-asax

我正在尝试在我的global.asax中访问每个请求(页面,文档,PDF等)的会话状态.我知道我不能在Application_BeginRequest中做到这一点,我认为我可以在Application_AcquireRequestState中,但它不会工作,这很奇怪,因为它适用于另一个项目.

所以,我正在寻找一个事件,我总是可以访问每个请求的会话状态.

谢谢

编辑:@Mike

我试过这样做

Sub Application_PreRequestHandlerExecute(ByVal sender As Object, ByVal e As EventArgs)
    Session("test") = "test"
End Sub
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误,因为我无法访问会话状态.

Mik*_*ike 15

会话在Application_AcquireRequestState期间加载.您可以安全地建立Application_PreRequestHandlerExecute并访问它.


更新:并非每个请求都有会话状态.你还需要检查null : if (System.Web.HttpContext.Current.Session != null).


xan*_*ded 7

最初的Request不会Session与之相关.因此,你需要检查Session是不是null:

var session = HttpContext.Current.Session;

if(session != null) {
    /* ... do stuff ... */
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢关于初始会议的建议! (2认同)