0

由于 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>

谢谢。

4

1 回答 1

0

我们无法重现这个问题。你能给我们一个可重现的网络应用程序,我们可以用它来进一步调查它吗?

于 2015-01-08T00:44:04.123 回答