【发布时间】:2015-02-23 12:15:39
【问题描述】:
我使用 procedure 将会话状态存储在 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
【问题讨论】:
标签: asp.net-mvc session azure redis stackexchange.redis