Session 为什么ASP.NET Sitecore站点会在7或8分钟后停止会话?

Session 为什么ASP.NET Sitecore站点会在7或8分钟后停止会话?,session,login,timeout,sitecore,sitecore7.5,Session,Login,Timeout,Sitecore,Sitecore7.5,我有一个Sitecore 7.5站点,包含两个前端CD服务器和一个带有粘性会话的负载平衡器。负载平衡器的默认超时时间为5分钟。Sitecore站点的ASP.NET默认会话超时值为20分钟。我一直收到该网站随机将用户注销的报告。我刚刚做了以下实验: 在新浏览器中启动新会话 启动了我手机上的计时器 几乎不停地点击网站上的不同页面。我空闲的最长时间大概是30秒 大约10-15分钟后,我突然注意到我不再登录该应用程序 我不明白为什么会这样。这是我用来登录的代码 protected v

我有一个Sitecore 7.5站点,包含两个前端CD服务器和一个带有粘性会话的负载平衡器。负载平衡器的默认超时时间为5分钟。Sitecore站点的ASP.NET默认会话超时值为20分钟。我一直收到该网站随机将用户注销的报告。我刚刚做了以下实验:

  • 在新浏览器中启动新会话
  • 启动了我手机上的计时器
  • 几乎不停地点击网站上的不同页面。我空闲的最长时间大概是30秒
  • 大约10-15分钟后,我突然注意到我不再登录该应用程序
我不明白为什么会这样。这是我用来登录的代码

        protected void ButtonLogin_Click(object source, EventArgs e)
    {
        bool loginSuccess = Sitecore.Security.Authentication.AuthenticationManager.Login("extranet\\" + TextLoginUsername.Text, TextLoginPassword.Text, CheckKeepLoggedIn.Checked) || (Sitecore.Security.Authentication.AuthenticationManager.Login("sitecore\\" + TextLoginUsername.Text, TextLoginPassword.Text, CheckKeepLoggedIn.Checked));
        if (loginSuccess)
        {
            LabelLoginError.Visible = false;
            Sitecore.Analytics.Tracker.Current.Session.Identify(Sitecore.Context.GetUserName());
            Sitecore.Analytics.Tracker.Contact.Tags["Full Name"] = Sitecore.Context.GetUserName();
            Response.Redirect(ButtonLogin.PostBackUrl);
            return;
        }

        //Otherwise log as error.
        LabelLoginError.Text = "Username/password combination was incorrect.";
        LabelLoginError.Visible = true;
    }

有什么想法吗?

您是否检查了CD服务器的分配?您可以在浏览器控制台中进行检查。 也许您的cookie过期了,负载平衡器刚刚切换了您的用户使用的服务器

还有一件事-您是否使用SSL来保护连接?过去我的一个朋友
同事/管理员在使用SSL正确配置LB时遇到一些问题。

是否检查了CD服务器的分配?您可以在浏览器控制台中进行检查。 也许您的cookie过期了,负载平衡器刚刚切换了您的用户使用的服务器

还有一件事-您是否使用SSL来保护连接?过去我的一个朋友
同事/管理员在使用SSL正确配置LB时遇到一些问题。

检查日志,查看您的应用程序域或应用程序池是否由于文件活动而重新启动,从而失去inProc会话状态。在日志中查找“关机”或“Sitecore已启动”

先前的回答误读了问题 您正在登录到计算机A,但负载平衡器上的粘性会话在5分钟后过期,您的下一个请求将启动一个新的粘性会话,并且有50%的几率再次路由到服务器A。如果它被分配到服务器A,您的体验不会受到影响,因为您仍然登录到服务器A。如果新的粘性会话被分配到服务器B,那么,您没有登录到服务器B,因此您会认为您已“注销”,但实际上您从未登录到服务器B

要解决此问题,请将负载平衡器会话超时设置为与服务器会话超时相同,即20分钟

存在粘性会话以确保将请求发送到同一服务器。通过将负载平衡器会话长度设置为短于服务器会话超时,您已经创建了15分钟的不足时间,如果您可以在原始服务器上仍然存在活动会话的情况下被定向到错误的服务器


在网页中设置带有服务器名称或ip地址的html注释将确认此行为。

检查日志,查看您的应用程序域或应用程序池是否由于文件活动而重新启动,从而失去inProc会话状态。在日志中查找“关机”或“Sitecore已启动”

先前的回答误读了问题 您正在登录到计算机A,但负载平衡器上的粘性会话在5分钟后过期,您的下一个请求将启动一个新的粘性会话,并且有50%的几率再次路由到服务器A。如果它被分配到服务器A,您的体验不会受到影响,因为您仍然登录到服务器A。如果新的粘性会话被分配到服务器B,那么,您没有登录到服务器B,因此您会认为您已“注销”,但实际上您从未登录到服务器B

要解决此问题,请将负载平衡器会话超时设置为与服务器会话超时相同,即20分钟

存在粘性会话以确保将请求发送到同一服务器。通过将负载平衡器会话长度设置为短于服务器会话超时,您已经创建了15分钟的不足时间,如果您可以在原始服务器上仍然存在活动会话的情况下被定向到错误的服务器


在网页中设置带有服务器名称或ip地址的html注释将确认此行为。

检查数据文件夹是否位于webroot之外。如果您的数据位于webroot中,则可能会重置应用程序池,因为数据文件夹、日志文件、viewstate缓存、lucene索引等中更改的文件数


有关更多详细信息,请参阅本文:-确保您的数据文件夹不在您的

中检查您的数据文件夹是否在webroot之外。如果您的数据位于webroot中,则可能会重置应用程序池,因为数据文件夹、日志文件、viewstate缓存、lucene索引等中更改的文件数


有关更多详细信息,请参阅本文:-确保您的数据文件夹不在您的

中。您是说在我的浏览器控制台中有某种方法可以查看当前分配给我的CD服务器吗?此外,如果我一直在网站上活动并继续请求页面,我的cookie将如何过期?是的,可以检查此分配。我不确定这是开箱即用的,或者管理员必须添加一些额外的标题,但这是肯定的。好的,所以如果您积极使用网站,cookie应该不会有问题。这些标题不是OOTB,您需要自己添加这些标题。您还可以进行测试并直接连接到内容交付服务器的实例。如果会话能够正常工作——这一定是负载Banalcer.Lukasz的问题——这实际上是一个非常好的主意。我想我会尝试运行直接连接到每个交付服务器的测试。谢谢。您是说在我的浏览器控制台中有某种方法可以查看当前分配给我的CD服务器吗?此外,如果我一直都在网站上活动并继续请求页面,我的cookie将如何释放