由于 MS 宣布将共享缓存替换为新的 azure redis 缓存,我已根据此迁移我的应用程序以使用 redis 缓存而不是 azure 共享缓存
现在我面临一个问题,在注销 - >登录时它不会调用 session_start 方法,我的应用程序将设置值以及用户对象,如活动(用户可以执行)和其他一些。
当我使用 inproc 会话状态或以前的 azure 共享缓存时,在 logout->login 上它会调用logoutcallback() >> session_start() >> AuthorizeCore()但使用 redis 缓存它会调用 logoutcallback() >> AuthorizeCore(),我不知道这里有什么问题?
注销和登录代码如下
public void Logout()
{
//redirect url
var RedirectUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host, Url.RouteUrl("Default", new { controller = "Account", action = "LogoutCallback" }));
//logout
WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule;
string signoutUrl = (WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(authModule.Issuer, RedirectUrl, null));
Response.Redirect(signoutUrl, true);
}
[AllowAnonymous]
public void LogoutCallback()
{
Session.Abandon();
Response.Redirect(Url.Content("~/"), true);
}
我的 web.config 设置如下,用于会话状态的 redis 配置
<sessionState mode="Custom" customProvider="MySessionStateStore" >
<providers>
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="[my host]" accessKey="[my key]" ssl="true" operationTimeoutInMilliseconds = "1200000" connectionTimeoutInMilliseconds = "1200000"/>
</providers>
</sessionState>
谢谢。