AuthenticateRequest vs PostAuthenticateRequest + Session

时间:2014-05-15 16:41:37

标签: c# asp.net session

我们在使用AuthenticateRequest进行自定义控件时遇到问题: 为了保持信息,我们正在使用 HttpContext.Current.Application。

对于各种原因,如果多个用户同时工作,则这种方式不正常,因为应用程序密钥不是最终确定的。

问题:持久性发生在AuthenticateRequest事件中,据我所知,无法访问Session。我搜索了一下,发现了PostAuthenticateRequest事件以及有关差异的描述:http://leastprivilege.com/2006/07/02/authenticaterequest-vs-postauthenticaterequest/

可悲的是,我仍然无法访问Session,HttpApplication会抛出错误:

{"Session state is not available in this context."}

并且HttpApplication.Context.Session一直变为NULL。

有没有可能在这一点上获得会议?或者是否有我可以使用的另一个事件,它将起到同样的作用?

提前致谢。

马蒂亚斯

Edith:我发现在MapRequestHandler(Header set)和PostMapRequestHandler(Header未设置)之间丢失了Header

1 个答案:

答案 0 :(得分:1)

您的问题是PostAuthenticateRequest发生在管道中的早期,即调用​​AcquireRequestState之前。为了访问会话状态,您需要执行该事件,并且应该在生命周期的后期查看事件。如果您不熟悉事件序列,请查看here ...