Я внедрил отображаемое сообщение предупреждения для тайм-аута сеанса в приложении asp.net mvc2, используя следующую статью с некоторой настройкой в соответствии с требованием:Какое влияние F5 loadbalancer на тайм-аут сеанса в приложении asp.net mvc2
http://fairwaytech.com/2012/01/handling-session-timeout-gracefully/
наряду со следующим состоянием сеанса режим:
<sessionState mode="SQLServer" sqlConnectionString="Data Source=StudentsDB;User ID=xxxxxxx;Password=xxxxxxx;Integrated Security=False;MultipleActiveResultSets=True" allowCustomSqlDatabase="true" cookieless="false" timeout="30" compressionEnabled="true" sqlCommandTimeout="240" />
Форма Timeout = 15 и Sessiontimeout = 30
Приложение работает отлично в моей среде разработки и деинтеграции (без нагрузки в обеих средах.
Когда я развернул приложение в QA и промежуточной среде, где есть доступная конфигурация нагрузки F5, он начал вести себя странно.
Для некоторых пользователей появляется всплывающее предупреждение, а некоторые другие пользователи вообще не появляются, и иногда он выходит из системы автоматически.
Функциональность не работает должным образом и ведет себя странно.
На F5 loadbalancer нет липких сеансов.
В Global.asax.cs файле У меня есть следующий код:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Only access session state if it is available
if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
{
//If we are authenticated AND we don't have a session here.. redirect to login page.
HttpCookie authenticationCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authenticationCookie != null)
{
FormsAuthenticationTicket authenticationTicket = FormsAuthentication.Decrypt(authenticationCookie.Value);
if (!authenticationTicket.Expired)
{
//of course.. replace ANYKNOWNVALUEHERETOCHECK with "UserId" or something you set on the login that you can check here to see if its empty.
if (Session["IsSessionValid"] == null)
{
//This means for some reason the session expired before the authentication ticket. Force a login.
FormsAuthentication.SignOut();
Response.Redirect(FormsAuthentication.LoginUrl, true);
return;
}
}
}
}
}
Я попытался проверить код и все вещи на моем Devlopment и devintegration среды и ничего не нашел много. Может ли кто-нибудь помочь мне узнать возможные причины вышеупомянутой проблемы?
Благодарности & С уважением, Сантош Кумар Patro