注销时未调用Session_start - 使用 Azure Redis 缓存使用会话状态>登录



由于MS宣布将共享缓存替换为新的azure redis缓存,我已根据此将我的应用程序迁移为使用redis缓存而不是azure共享缓存

现在我面临的一个问题是,在注销->登录时,它不会调用session_start方法,在该方法中,我的应用程序会设置值以及类似用户对象的活动(用户可以执行)和其他一些活动。

当我使用inproc会话状态或以前的azure共享缓存时,在注销->登录时,它会调用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>

谢谢。

我们无法重新处理此问题。你能给我们一个可复制的网络应用程序,我们可以用来进一步调查它吗?

相关内容

  • 没有找到相关文章

最新更新