У меня есть проблемы с приложением ASP .NET MVC
. Приложение делает timeout в 20 минут приблизительно и совсем не осуществляется в ней.
У меня есть эти линии в web.config
:
<authentication mode="Forms">
<forms loginUrl="~/Cuenta/Login" timeout="2880" />
</authentication>
Я дезактивировал сеанс этой формы, думая, что оно было бы этим, но остаюсь с теми же проблемами.
<sessionState mode="Off" timeout="2880" />
Какая-то идея, состоящая в том, что он может происходить?
Чтобы определять timeout (в минуты) в MVC он делается asГ - в web.config:
<configuration>
<system.web>
<sessionState timeout="90"></sessionState>
</system.web>
</configuration>
Стандартная настройка - 20 (поэтому прямо сейчас в 20 минут он вытекает)
Я не знаю, то, что ты хочешь, состоит ли в том, чтобы он не делал timeout никогда, или если ты хочешь увеличить это больше во времени. Я думаю, что максимальное время timout sessión - 1 год, но лично предпочитаю не удлинять без необходимости время timeout с webconfig. Подумай, что длинный сеанс 1 года например поддержит весь info в стороне сервера. Если у тебя есть много пользователи, он нереальный.
Если то, что ты хочешь, состоит в том, чтобы никогда не умер сеанс, ты можешь делать hack в javascript для того, чтобы autologuee каждое X время.
Здесь решение https://stackoverflow.com / questions / 1431733/keeping-asp-net-session-open-alive
В этом примере осуществляется биение (heartbeat) каждые 5 минут (configurable) Я надеюсь, что он подает тебя.
Чтобы заканчивать хорошо ее sesiГіn ты нуждаешься в двух вещах. Сначала, который сеанс закончил на сервере и 2Вє, что вид, который estГЎ активная исчезает и явился видом Login.cshtml.
1Вє - Для того, чтобы сеанс закончился на сервере, ты нуждаешься измени Web.config и aГ±adir...:
<configuration>
<system.web>
<sessionState timeout="90"></sessionState>
</system.web>
</configuration>
2Вє - ты Нуждаешься в том, чтобы вынудить также к концу сеанса, когда система проведет минуты бездействия. Для этого ты можешь использовать этот рукописный шрифт. Способ это называть может состоять со страницы _Layout.cshtml в том, что это Вид diseГ±o, "masterpage"... Хорошее - что рукописный шрифт afectarГЎ во все страницы, которые используют ту же образцовую страницу. Тогда ты должен звонить в рукописный шрифт делая...
<body onload="VigilaActividad()">
Помнит, что в MVC для того, чтобы вид использовал образцовую страницу, debesponer в верхней части...
{ Layout = "~/Views/Shared / _ Layout.cshtml"; }
И чтобы заканчиваться, ты размещаешь код javascript в конце вида _Layout.cshtml
<script type="text/javascript">
// Vigila la actividad del sistema.
// --------------------------------
function VigilaActividad() {
// Contador de tiempo en el que el usuario está inactivo.
// ------------------------------------------------------
var segundosDesdeUltimaActividad = 0;
// Recuperamos del Controlador el valor timeOut definido en sessionState del Web.config
// -----------------------------------------------------------------------------------
var timeOut = '@Convert.ToInt32(((System.Web.Configuration.SessionStateSection)System.Configuration.ConfigurationManager.GetSection("system.web/sessionState")).Timeout.TotalMinutes)';
var maximaInactividad = timeOut * 60;
// A intervalos de 1 segundo (1000) revisa el estado del contador.
// ---------------------------------------------------------------
setInterval(function () {
segundoDesdeUltimaActividad++;
if (segundosDesdeUltimaActividad > maximaInactividad) {
location.href = '../Account/login';
}
}, 1000);
// Esta funcion inicializa el contador de inactividad, sucede cuando se detecta que el usuario está trabajando...
// -------------------------------------------------------------------------------------------------------------
function reseteaActividad() {
segundosDesdeUltimaActividad = 0;
}
// Vector con los eventos que vigila.
// ----------------------------------
var EventosActividad = [
'keydown', 'keypress', 'scroll', 'mousedown', 'mousemove', 'touchstart', 'resize'
];
// Creamos "Escuchadores" de eventos al documento...
// -------------------------------------------------
EventosActividad.forEach(function (eventName) {
document.addEventListener(eventName, reseteaActividad, true);
});
}
Вкратце, когда пользователь прекратит работать inicariГЎ подсчет ineactividad системы и estГ© подсчет inicializarГЎ, когда он будет обнаружен снова activiad со стороны пользователя. Если подсчет бездействия достигает стоимости, определенной в timeOut тогда saldrГЎ системы и нас mostrarГЎ снова экран login.