Timeout в ASP.NET MVC

У меня есть проблемы с приложением ASP .NET MVC. Приложение делает timeout в 20 минут приблизительно и совсем не осуществляется в ней.

У меня есть эти линии в web.config:

<authentication mode="Forms">
<forms loginUrl="~/Cuenta/Login" timeout="2880" />
</authentication>

Я дезактивировал сеанс этой формы, думая, что оно было бы этим, но остаюсь с теми же проблемами.

<sessionState mode="Off" timeout="2880" />

Какая-то идея, состоящая в том, что он может происходить?

3
задан 10.06.2016, 15:10
3 ответа

Чтобы определять timeout (в минуты) в MVC он делается asГ - в web.config:

<configuration>
  <system.web>
     <sessionState timeout="90"></sessionState>
  </system.web>
</configuration>

Стандартная настройка - 20 (поэтому прямо сейчас в 20 минут он вытекает)

2
ответ дан 24.11.2019, 14:11
  • 1
    Это у меня есть в отдельном OFF за 2880 минут (2 d и # 237; схвати) –  David91 20.06.2016, 10:13

Я не знаю, то, что ты хочешь, состоит ли в том, чтобы он не делал 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) Я надеюсь, что он подает тебя.

0
ответ дан 24.11.2019, 14:11
  • 1
    Хорошие Эктор, Спасибо за тебя r и # 225; попросите ответ, я объясняю тебе: Я не хочу, чтобы потерял силу sesi и # 243; n немедленно, в самом деле, если имей, и # 237; во включенная sesi и # 243; n факт дезактивирования ее был, чтобы делать доказательства. Моя идея - что sesi и # 243; n будьте приблизительно 90 минут и потом из-за JS, как у меня есть рукописный шрифт (с onclick в любом сайте внутри этикетки html). Этот подтверждает дату, которая сохраняет в куки-файле каждый раз, когда осуществляется что-то и тогда завися, пересылает Login или нет. Но у меня есть проблемы с этим и я не нахожу ning и # 250; n ни учебник ни ничто, что говорило бы мне, как делать это для того, чтобы пошел OK –  David91 10.06.2016, 14:36
  • 2
    Tendr и # 237; в который видеть проект, но поскольку ты рассказываешь мне, я думаю, что ты не нуждаешься в onClick внутри html, чтобы подтверждать, у него нет ли sesi и # 243; n. Чтобы устанавливать хорошо время sesi и # 243; n, я обычно основываюсь в этом msdn.microsoft.com/en-us/library/… –  Hector Fernandez 10.06.2016, 14:47
  • 3
    и помещая SlidingExpiration False msdn.microsoft.com/en-us/library/… –  Hector Fernandez 10.06.2016, 14:48
  • 4
    В твой вопрос и я говорю тебе Эктор. Большое спасибо. –  David91 10.06.2016, 15:00
  • 5
    Хорошие Эктор, я это поместил: < forms loginUrl = и quot; ~ / счет / Login" timeout = и quot; 2880" slidingExpiration = и quot; false" / > Продолжи бросаться снаружи, по истечении немного (не более чем 30 минут) он дает мне 302 и пробует меня идти к login, не снимая ничего layout ни... –  David91 13.06.2016, 12:00

Чтобы заканчивать хорошо ее 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.

2
ответ дан 24.11.2019, 14:11