Как MS объявили заменить общий кэш на новый кэш лазурного REDIS я мигрировал мое приложение, чтобы использовать Redis кэш вместо лазурного общего кэша согласно thissession_start не вызывается на выходе из системы -> войти в системе с состоянием сеанса с использованием лазурной Redis кэшировать
Теперь я столкнулся с одной проблемой, когда при выходе из системы -> login это не вызовет метод session_start, где мое приложение будет устанавливать значения вместе с объектами пользователя, такими как действия (пользователь может выполнить) и некоторые другие.
В то время как я использовал состояние InProc сеанса или ранее лазурного общей кэш-памяти, то на logout-> Логин было бы назвать 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>
Спасибо.