【问题标题】:Redis session expired after 20 minutes, why?Redis 会话在 20 分钟后过期,为什么?
【发布时间】:2015-02-21 23:24:53
【问题描述】:

我使用 redis 缓存(天蓝色服务器)

System.Web.HttpContext.Current.Session["UserID"] = user.Id;

20 分钟后System.Web.HttpContext.Current.Session["UserID"] 返回null

我将Microsoft.Web.RedisSessionStateProvider 用于我的自定义会话。

当我打电话给System.Web.HttpContext.Current.Session["UserID"] 时,滑动会话的最佳方式是什么

<sessionState mode="Custom" customProvider="MySessionStateStore">
  <providers>
    <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="SERVER" accessKey="KEY" ssl="true" throwOnError="false" />
  </providers>
</sessionState>

【问题讨论】:

  • “滑动会话”是什么意思?您是否在配置中为会话设置了 20 分钟的超时时间?
  • 感谢 Vsevolod 编辑 :)
  • 不,我没有。默认情况下,我想在 redis 中
  • 我认为这是目前唯一要做的事情,因为它看起来不受支持

标签: c# azure redis session-state


【解决方案1】:

你没有设置超时配置,默认的超时配置是20分钟。 试试这个

<sessionState mode="Custom" customProvider="MySessionStateStore" timeout="120">

【讨论】:

    【解决方案2】:

    当我调用变量时,同时我更新会话变量,如下所示:

    var userId = System.Web.HttpContext.Current.Session["UserID"]; // Get value 
    System.Web.HttpContext.Current.Session["UserID"] = userId; // Refresh it immediately to increase timeout
    

    【讨论】:

    • 这仍然没有帮助:(
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2011-04-15
    • 1970-01-01
    • 2014-04-17
    • 2017-05-17
    相关资源
    最近更新 更多