日期:2014-05-17  浏览次数:20452 次

急。。。global.asax中会话状态不可用(网上搜过,但是貌似不行啊)
用户操作每个页面的时候都进行一次是否登录的判断,不想在每个页面里面写判断,于是想在global文件中判断,就是取出用户登录时放到session中的userid进行判断,但是session一直都取不到。。。。
网上说
/// <summary>
  /// 获取会话状态 此时Session生效
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  protected void Application_AcquireRequestState(object sender, EventArgs e)
  { }
在这个方法之后都能取到session,但是我试了下,貌似真的取不到啊,本人没系统学过asp.net,因为要将一个已经写jsp网站改为asp.net的,时间也比较紧,各位大神帮帮忙啊。。。。

------解决方案--------------------
ashx要继承这个“IRequiresSessionState”
------解决方案--------------------
这些事件被触发的顺序是:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
· Application_ResolveRequestCache
· Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<执行代码>>
· Application_PostRequestHandlerExecute
· Application_ReleaseRequestState
· Application_UpdateRequestCache
· Application_EndRequest

每个页面调用权限判断公共方法,防止没权限,直接在浏览器输入地址,

或者在母版页进行权限判断,顺便就判断了session状态。
------解决方案--------------------
我觉得应该用PostAcquireRequestState这个Event.

根据msdn, AcquireRequestState 是Occurs when ASP.NET acquires the current state (for example, session state) that is associated with the current request.
还没有取到状态。

而PostAcquireRequestState 是Occurs when the request state (for example, session state) that is associated with the current request has been obtained.
已经取到状态了。
------解决方案--------------------
2楼正解
------解决方案--------------------
你可以写一个类

在page里面继承
------解决方案--------------------
用httpMoudle可以实现的,在Application_AcquireRequestState
session在这里应该是能取到的
------解决方案--------------------
探讨
这些事件被触发的顺序是:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
· Application_ResolveRequestCache
· Application_AcquireRequestState
· Application_PreRequ……

------解决方案--------------------
你的看看请求的url是什么啊,很多时候请求的只是一张图片而已,你说能有session吗?加个判断吧,如果请求的路径中含有.aspx,那session是有的
------解决方案--------------------
图片不会进asp.net的pipeline吧。
------解决方案--------------------
至于会不会,你自己实践下就好了。我记得是会的,也做过