Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET MVC页面生命周期中,我最早何时可以访问会话?_Asp.net_Asp.net Mvc_Session - Fatal编程技术网

在ASP.NET MVC页面生命周期中,我最早何时可以访问会话?

在ASP.NET MVC页面生命周期中,我最早何时可以访问会话?,asp.net,asp.net-mvc,session,Asp.net,Asp.net Mvc,Session,我的问题与StackOverflow的问题基本相同。我只是再次询问,因为接受的答案不正确(您无法访问应用程序_BeginRequest中的会话对象) 我们的用例是希望在会话中存储经过身份验证的用户的用户对象。因此,在后续请求中,我们可以根据会话中的用户对象正确设置IPrincipal和IIdentity 我使用基本控制器和重写OnActionExecuting做类似的事情。我不知道这是否是最早可以完成的,但我知道这将发生在您的操作执行之前(因此在视图呈现之前)。或者,您可能希望有一个自定义的au

我的问题与StackOverflow的问题基本相同。我只是再次询问,因为接受的答案不正确(您无法访问应用程序_BeginRequest中的会话对象)


我们的用例是希望在会话中存储经过身份验证的用户的用户对象。因此,在后续请求中,我们可以根据会话中的用户对象正确设置IPrincipal和IIdentity

我使用基本控制器和重写OnActionExecuting做类似的事情。我不知道这是否是最早可以完成的,但我知道这将发生在您的操作执行之前(因此在视图呈现之前)。或者,您可能希望有一个自定义的authorize属性来执行您想要的操作。这可能是确保在运行其他属性之前完成此操作的唯一方法。

显然AcquisiteRequestState是HttpContext.Current.Session不为null的最早事件。我只是按顺序将它们全部连接起来并进行测试。我更喜欢使用PreRequestHandlerExecute,它发生在调用控制器上的构造函数之前


如果您希望将代码放在Global.asax中或从Global.asax中引用代码,则这是相关的。有关应用程序生命周期中事件的顺序列表,请参见本页:

我必须说,这很有趣,值得再看一看。刚刚实现了OnActionExecuting覆盖,它工作得非常出色。OnActionExecuting在authorize筛选器之前调用,因此此解决方案将适用于我们。