我使用此过程将会话状态存储在 Azure Redis 缓存中。
NuGet RedisSessionStateProvider将您的会话状态保存在 Redis 中,您可以像在 Proc Session 中一样管理它。
当用户登录时,我做了这样的事情:
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
Session.Add("key", "value");
会话值在应用程序中始终可用。如果你查看你的 REDIS 缓存,你会看到这两个键snurztvlyl2jk5wnzstjikln_Internal
snurztvlyl2jk5wnzstjikln_Data
在哪里 snurztvlyl2jk5wnzstjikln
是 SessionID。
当我注销时:
public ActionResult LogOff()
{
Session.Abandon();
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
用户 SignOut 但如果我查看 redis 缓存,值仍然存在。它们不会被删除,只会在会话超时后被删除。我也尝试过Session.Clear()
,Redis 缓存中的键仍然存在。
为什么没有删除密钥或我做错了什么?
更新我创建了一个公共回购来重现这个问题 https://github.com/ricardopolo/RedisIssue