【发布时间】:2019-09-06 21:41:21
【问题描述】:
我们使用DistributedSqlServerCache 来存储用户会话数据,但我注意到一些意外/奇怪的行为。所以我想知道DistributedSqlServerCache 如何在幕后工作以帮助我理解我所看到的行为。
当用户到达站点时,会立即插入一个 DB 条目,如下图 1 所示。
当用户注销或会话超时时,会话数据被清除(替换为任意默认值)并且 ExpiresAtTime 也被重置,如下图 2 所示。
再次,另一个用户到达该站点,并插入了一个新的 DB 条目,如下图 3 所示。
但是这一次,如果应用程序池被回收或者IIS被重置,那么下面(img 4)就是数据库中的结果:
原来的会话似乎没有被清空,新的会话也开始了。
为了完整起见,下面是我们在 StartUp.cs 中使用的代码:
services.AddDistributedSqlServerCache(o =>
{
o.ConnectionString = "conn_string...";
o.SchemaName = "dbo";
o.TableName = "PS_PWD_SESSIONS";
});
services.AddSession();
除非我用错了方法,否则这对我来说毫无意义。如果能对此行为有任何见解,我将不胜感激。
【问题讨论】:
-
你为iis设置了机器密钥吗?
-
我相信这些都设置好了。
标签: c# asp.net-core session-state