Переменные сессии ASP иногда обнуляются на сервере с балансировкой нагрузки и SQL - PullRequest
1 голос
/ 16 июня 2019

Я создал веб-приложение, работающее на ASP.Net и Microsoft SQL Server 2016 Standard Edition.Приложение размещено локально на IIS.У меня есть два сервера, на которых работает приложение, и на этих двух серверах есть SQL-серверы в группе «Всегда в наличии».Существует аппаратный балансировщик нагрузки, который отправляет запросы с использованием алгоритма циклического перебора, поэтому я настроил Session для базы данных.Ключ компьютера одинаков на обоих компьютерах, а пул приложений IIS настроен на обновление только один раз в полночь.Пути приложения одинаковы как на серверах, так и на SQL Always On ссылается IP-адрес кластера.

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

Это моя часть web.config.

  <connectionStrings>
    <add name="SQLConnectionString" connectionString="server=SERVERIP,PORT;Database=DATABASE;uid=USERNAME;pwd=PASSWORD;Max Pool Size=10000" />
  </connectionStrings>

  <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" enableSessionState="true" />
  <sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="SQLConnectionString" cookieless="AutoDetect" timeout="10" />
  <machineKey decryptionKey="DECRYPTION KEY" validationKey="VALIDATION KEY" />

Так я получаю доступ к переменным сеанса.

//Intermediate steps are omitted obviously like creating captcha, login validation, etc.

Session["captcha"] = captcha.ToString();

if (Session["captcha"].ToString() == txtCaptcha.Text)
{
    //ValidateLogin
    //if credentials are correct
    {
        Session["Uname"] = username.Text.ToLower().Trim();
        Session["HomeDir"] = GetHomeDirectory(Session["Uname"].ToString());
    }
}

// on another page
lblUname.Text = Session["Uname"].ToString();
String homedir = Session["Homedir"].ToString(); 

В чем причина того, что переменная сеанса станет нулевой, и каково будет решение?

...