在ASP.NET MVC页面生命周期中,我最早何时可以访问会话?
我的问题与StackOverflow的问题基本相同。我只是再次询问,因为接受的答案不正确(您无法访问应用程序_BeginRequest中的会话对象)在ASP.NET MVC页面生命周期中,我最早何时可以访问会话?,asp.net,asp.net-mvc,session,Asp.net,Asp.net Mvc,Session,我的问题与StackOverflow的问题基本相同。我只是再次询问,因为接受的答案不正确(您无法访问应用程序_BeginRequest中的会话对象) 我们的用例是希望在会话中存储经过身份验证的用户的用户对象。因此,在后续请求中,我们可以根据会话中的用户对象正确设置IPrincipal和IIdentity 我使用基本控制器和重写OnActionExecuting做类似的事情。我不知道这是否是最早可以完成的,但我知道这将发生在您的操作执行之前(因此在视图呈现之前)。或者,您可能希望有一个自定义的au
我们的用例是希望在会话中存储经过身份验证的用户的用户对象。因此,在后续请求中,我们可以根据会话中的用户对象正确设置IPrincipal和IIdentity 我使用基本控制器和重写OnActionExecuting做类似的事情。我不知道这是否是最早可以完成的,但我知道这将发生在您的操作执行之前(因此在视图呈现之前)。或者,您可能希望有一个自定义的authorize属性来执行您想要的操作。这可能是确保在运行其他属性之前完成此操作的唯一方法。显然AcquisiteRequestState是HttpContext.Current.Session不为null的最早事件。我只是按顺序将它们全部连接起来并进行测试。我更喜欢使用PreRequestHandlerExecute,它发生在调用控制器上的构造函数之前
如果您希望将代码放在Global.asax中或从Global.asax中引用代码,则这是相关的。有关应用程序生命周期中事件的顺序列表,请参见本页:我必须说,这很有趣,值得再看一看。刚刚实现了OnActionExecuting覆盖,它工作得非常出色。OnActionExecuting在authorize筛选器之前调用,因此此解决方案将适用于我们。