Session 从MVC内核中的数据库表获取会话数据
在我的MVC核心应用程序中,我使用会话跟踪登录。这很好,但是当我的web应用程序空闲/重新启动时,当会话清除并且所有用户都注销时,这是一个问题。我已经修改了我的应用程序,通过调用和设置启动Session 从MVC内核中的数据库表获取会话数据,session,asp.net-core,asp.net-core-mvc,Session,Asp.net Core,Asp.net Core Mvc,在我的MVC核心应用程序中,我使用会话跟踪登录。这很好,但是当我的web应用程序空闲/重新启动时,当会话清除并且所有用户都注销时,这是一个问题。我已经修改了我的应用程序,通过调用和设置启动ConfigureServices方法中的services.AddDistributedSqlServerCache(options)&services.AddSession(options),以及调用app.UseSession()中的配置方法 我似乎每件事都做对了;当新客户端第一次设置会话值时,它会保存在缓
ConfigureServices
方法中的services.AddDistributedSqlServerCache(options)
&services.AddSession(options)
,以及调用app.UseSession()
中的配置方法
我似乎每件事都做对了;当新客户端第一次设置会话值时,它会保存在缓存表中,当Sesion.Get
被称为会话expiresAtime
表值更新时
那么,考虑到会话数据已保存到表中,为什么在重新启动时不抓取它呢?这不是cookie问题,cookie过期值设置为10年,会话空闲超时值设置为2周。似乎会话数据只是通过IIS内存处理的,但却被保存到我的缓存db表中,我觉得这很奇怪。从您的描述来看,一切听起来都是正确的,但是如果能从Startup.cs
中看到实际的代码,那会很有帮助。可能有一个错误你没有注意到,也没有在你的问题中描述。我已经检查了很多次,扫描错误并尝试了不同的选项,代码应该是正确的,但你是对的,新的眼睛不会伤害尝试在services.AddMvc()之前移动所有分布式缓存/会话配置
。在这个问题上,顺序往往很重要,这是人们通常看到的方向。我过去曾尝试过,现在又尝试过不同的顺序,但没有什么不同;会话数据在重新启动时仍无法抓取。我已经断断续续地处理这个问题好几个星期了,尝试了我遇到的所有指南和想法,但没有任何解决方案。可能只是MVC核心的一个问题。