Сеанс ASP.NET определяет время всех пользователей одновременно - PullRequest
0 голосов
/ 25 октября 2019

У меня есть пользователи, которые сообщают, что они выходят из системы сразу после определенного времени простоя.

Посмотрел свойства сеанса ASP в IIS, дважды проверил, что для нового идентификатора в безопасном соединении установлено значение true.

Пользователи сообщали, что все вышли из системы через ~ 20 минут - я видел, что в свойствах сеанса время ожидания было установлено равным 20 минутам, поэтому я изменил его на 2 часа, и у всех пользователей истекло время ожидания примерно через 2 часа.

Вот как я начинаю сеанс:

    protected void btn_Submit_Click(object sender, EventArgs e)
    {
        //Instantiate user class
        var aUser = new User();

        //Authenticate the user
        aUser = aUser.Get_User(txb_Username.Text, txb_Password.Text);

        //Check if user details are incorrect
        if (aUser.UserId < 1)
        {
            //Tell the user the details are incorrect
            Label1.InnerText = "The login details were incorrect!";
        }
        else
        {
            //Check if user is archived
            if (aUser.Archived == 1)
            {
                //Show popup error
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "alertMessage", "alert('This account has been archived')", true);
            }
            else
            {
                //User authenticated - create a viewstate using the users ID
                ViewState["userId"] = aUser.UserId;

                //Check if user has not changed their password
                if (aUser.PasswordChanged == 0)
                {
                    //Force user to change their password
                    pnlLoginForm.Visible = false;
                    pnlResetPasswordForm.Visible = true;
                }
                else
                {
                    //Set session variables
                    Session["User_ID"] = aUser.UserId;
                    Session["Role"] = aUser.Role;
                    Session["UserLevel"] = aUser.UserLevel;

                    //Redirect user to system
                    Response.Redirect("~/System");
                }
            }
        }
    }

У меня также есть это в моем Web.Config:

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>

Ожидаемые результаты: я ожидаю 1время ожидания истекло 2 часа, но не у всех пользователей

Фактические результаты: время ожидания всех пользователей истекло 2 часа

Понятия не имеюс чего начать искать отладку этой проблемы

1 Ответ

0 голосов
/ 25 октября 2019

Утилизируется ли пул приложений? Это создаст впечатление, что время сеансов истекло одновременно.

...