当MS宣布将共享缓存替换为新的azure redis缓存时,我已根据this迁移了我的应用程序以使用redis缓存而不是azure共享缓存
现在我面临一个问题,即注销 - >登录它不会调用session_start方法,我的应用程序将设置值以及用户对象,如活动(用户可以执行)和其他一些。
当我使用inproc会话状态或之前的azure共享缓存时,然后在logout-> gt登录时,它会调用 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>
感谢。
答案 0 :(得分:0)
我们无法重现这个问题。您能给我们一个可重现的网络应用程序,我们可以用它来进一步调查吗?