会话超时后,ASP.NET在调用新的MVC操作之前未执行Session_Start

时间:2018-07-18 12:33:10

标签: asp.net asp.net-mvc

在Global.asax.cs文件中,我有一些逻辑作为Session_Start方法的一部分。 逻辑将一些信息从数据库加载到会话变量,以便所有其他Controller动作都可以使用它们。一切正常,直到会话终止。

由于我使用的是Angular(SPA),因此用户的操作不会频繁进入服务器,因此会话在“服务器不活动” 20分钟后便会过期(由于他在客户端工作,因此用户不活动) 。

一旦他想执行需要执行MVC控制器动作的动作,控制器构造函数就不会在缓存中找到信息并抛出错误。

我希望Session_Start将在调用控制器承包商之前触发,但Sesion_Start事件根本不会触发,因为我没有将信息分配给会话变量,我只需要读取它们,但它们不可用。

我试图将虚拟数据分配给会话以触发Session_Start事件,但我只能从控制器操作中执行此操作,但是我需要在Controller构造函数之前执行session_start事件。

当会话不存在(过期)时,是否有办法在每个服务器请求上触发Session_Start?是否可以在控制器构造函数之前将其触发?

问题是我无法从Application_BeginRequest()执行此操作,例如,因为无法在该范围内访问或使用会话。

***这种有问题的行为仅在生产中发生。在开发阶段,session_start始终会触发。我了解它的“设计”,因此很难复制**

0 个答案:

没有答案