会话在超时前过期

时间:2018-07-05 18:01:32

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

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

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

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

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

会话结束代码:

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

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

预先感谢

1 个答案:

答案 0 :(得分:0)

您是否在负载均衡器后面?如果是这样,您可能只是在服务器场中碰到一台服务器,而该服务器实际上并没有像您声明的那样正在对每个服务器设置会话设置