使用计时器访问存储对象的会话变量

时间:2019-10-15 03:57:26

标签: c# timer session-variables httpcontext

希望代码能说明其中的大部分内容,但是我想每5分钟访问一次会话变量,但是我知道如何执行此操作的唯一方法是使用HttpContext.Current。

这在页面仍然新鲜时第一次起作用,但在下一次迭代中不起作用。

第一次成功调用后,CurrentCtx.Session变为null,我理解了原因,但是我正在寻找一种替代解决方案,以便它可以工作。

我该怎么做?

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);
      }
    }
  }
}

0 个答案:

没有答案