【问题标题】:Session getting expired before timeout会话在超时前过期
【发布时间】:2018-12-14 07:10:08
【问题描述】:

我在 ASP.Net Web API 中配置了 cookieless session_state,超时时间为 20 分钟。

<sessionState mode="InProc" timeout="20" />

在建立的每个新会话上,我都会将生成的 session_id 存储在字典中以跟踪会话,并在 session_end 时分别从字典中删除 session_id。

但是我遇到了一个奇怪的问题(不是很频繁),每当新用户建立会话时,它就会立即过期,并且 session_id 会从字典中删除。

Session_End 代码:

protected void Session_End()
    {
        var sessionId = this.Session.SessionID;
        if (SessionDictionary.ContainsKey(sessionId))
        {
            SessionDictionary.Remove(sessionId);
        }
    }

所以请如果有人可以指导我。 另外,我怀疑“this.Session.SessionID”是指已过期的 session_id 还是当前创建的。

提前致谢

【问题讨论】:

  • 我很好奇您为什么需要跟踪会话。
  • 我在会话中为每个相应的用户存储数据,这就是为什么

标签: c# asp.net iis asp.net-web-api session-state


【解决方案1】:

您是否在使用负载平衡器?如果是这样,您可能只是在您的场中访问了一个服务器,该服务器实际上没有会话设置,因为它特定于您在进程中声明的每个服务器

【讨论】:

  • 是的,我们是,但为此我们实施了粘性会话。但是为了调试更多,我们使用了单服务器,然后我们也遇到了这个问题
猜你喜欢
  • 2013-09-18
  • 1970-01-01
  • 2020-04-25
  • 2011-11-18
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多