<sessionstate>配置仅在无cookie

时间:2016-02-23 19:52:25

标签: asp.net asp.net-mvc asp.net-web-api

我在ASP.NET <sessionState>配置上遇到了奇怪的行为。

我正在尝试使用mode="SQLServer"。 当我放置cookieless="true"时,一切都按照应有的方式运行,ASPStateTempSessions表按预期填充。

cookieless="false" ASP.NET完全忽略我的配置并在其进程中托管会话时(ASPStateTempSessions上没有任何内容)。

我不知道为什么cookieless配置会产生这种意外行为。 任何人都知道为什么会这样,或者我该如何解决?

顺便说一下,这是我的配置:

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="MyConnectionString" />

P.S:

我已经仔细检查了我的浏览器Cookie,这绝对与我的浏览器无关。

为了测试,我还尝试使用custom implementation。 发生完全相同的行为,仅适用于cookieless="true"

1 个答案:

答案 0 :(得分:1)

当在web.config中使用cookie时,在第一次使用cookie之前不会创建会话,直到会话对象持久存在。这意味着数据库不会更新,cookie也不会写入服务器。您可以通过将一些虚拟值写回Session对象然后检查是否已创建数据库记录并将cookie写入浏览器来测试是否是这种情况。