Доступ к переменной сеанса, которая хранит объект, используя таймер - PullRequest
0 голосов
/ 15 октября 2019

, надеюсь, код говорит большую часть этого, но я хочу получать доступ к переменной сеанса каждые 5 минут, но единственный способ узнать, как это сделать, - использовать HttpContext.Current.

Это работает первымвремя, пока страница еще свежа, но не на следующих итерациях.

После первого успешного вызова CurrentCtx.Session становится пустым, я понимаю причину, но я ищу альтернативное решение, такэто работает.

Как мне это сделать?

public static void StartModelNotification()
{
  var startTimeSpan = TimeSpan.Zero;
  var periodTimeSpan = TimeSpan.FromMinutes(1);

  var CurrentCtx = System.Web.HttpContext.Current;
  timer = new System.Threading.Timer((e) =>
  {
    SendModelNotification(CurrentCtx);
  }, null, startTimeSpan, periodTimeSpan);
}

public static void SendModelNotification(HttpContext CurrentCtx)
{
  if (CurrentCtx != null)
  {
    if (CurrentCtx.Session != null)
    {
      var sessionModel = CurrentCtx.Session[ToxSentryWebConstants.QB_QUERYMODEL_MAPPING_SESSION_DATA];
      if (sessionModel != null)
      {
        MappingModelGroupWrapper sessionMappingModel = sessionModel as MappingModelGroupWrapper;
        sessionMappingModel.ResetModelLastAccessedDate(ResultsID);
      }
    }
  }
}
...