Sitecore 7.5 MVC 和 HttpContext.Session.Timeout 设置为 1 分钟
Sitecore 7.5 MVC and HttpContext.Session.Timeout set to 1 min
我将会话超时设置为 20min,但是当我尝试从操作中访问此值时,我得到的是 1min。
Web.Config设置为:
<sessionState mode="InProc" cookieless="false" timeout="20">
<authentication mode="None">
<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="20" />
</authentication>
In Global.asax.cs in Session_Start 超时值是 20min:
HttpContext.Current.Session.Timeout
但在我的控制器中实际设置为 1min:
System.Web.HttpContext.Current.Session.Timeout
HttpContext.Session.Timeout
我发现当我从 web.config 中删除类型为 (Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus
) 的 SitecoreHttpModule
时,超时工作正常,但我认为我无法永久删除它。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
<add type="Sitecore.Web.RewriteModule, Sitecore.Kernel" name="SitecoreRewriteModule"/>
<!-- !!!REMOVED MODULE!!! <add type="Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus" name="SitecoreHttpModule"/> -->
<add type="Sitecore.Resources.Media.UploadWatcher, Sitecore.Kernel" name="SitecoreUploadWatcher"/>
<add type="Sitecore.IO.XslWatcher, Sitecore.Kernel" name="SitecoreXslWatcher"/>
<add type="Sitecore.IO.LayoutWatcher, Sitecore.Kernel" name="SitecoreLayoutWatcher"/>
<add type="Sitecore.Configuration.ConfigWatcher, Sitecore.Kernel" name="SitecoreConfigWatcher"/>
...
</modules>
</system.webServer>
有什么地方可以为这个模块配置这个超时,或者有任何其他方法可以将会话超时设置为所需的值吗?
在 Sitecore 7 中,现在有多个地方您必须指定会话超时。
我会在您的 Web.config 中检查这些值。
<setting name="Authentication.ClientSessionTimeout" value="120" />
和
<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="120" />
然后
<sessionState mode="InProc" ... timeout="120" />
更多信息在这里:
Strange Timeout in Sitecore 7
问题出在 Sitecore Analytics 模块中的漫游器检测中。我的浏览器被识别为机器人,Sitecore.Analytics.Tracking.config
文件中有一些相关设置:
<!-- ANALYTICS ROBOTS SESSION TIMEOUT
The ASP.NET Session Timeout for auto detected robots.
When the automatic robot detection identifies a session as being a robot, the ASP.NET
Session Timeout is set to this value (in minutes).
Default: 1
-->
<setting name="Analytics.Robots.SessionTimeout" value="1" />
当检测到 bot 时超时设置为 1 分钟 以节省一些内存并且不会保持会话太长。
当我完全禁用 Analytics 或禁用 [=12=](在 Sitecore.Analytics.Tracking.config
文件中)时,超时将设置为所需的 20min 值。
正确的解决方案是正确分类浏览器(而不是作为机器人)。
关于此问题的另一个 post:
Sitecore Analytics Robots SessionTimeout causing premature session timeout
新用户的每个第一个请求都被视为可能的机器人请求。这就是为什么将这些请求的会话超时设置为 1 分钟的原因。
如果请求是由正确的最终用户执行的,您的页面上应该有 VisitorIdentification
代码,这实际上会导致对服务器的另一个后台调用并为用户延长会话。
只需添加
@using Sitecore.Mvc.Analytics.Extensions
...
@Html.Sitecore().VisitorIdentification()
到您的布局 .cshtml 文件。
第一个请求的超时将设置为 1 分钟,但随后会在 Sitecore 执行 VisitorIdentification
调用时自动更改回 20(或配置的任何值)。
我将会话超时设置为 20min,但是当我尝试从操作中访问此值时,我得到的是 1min。
Web.Config设置为:
<sessionState mode="InProc" cookieless="false" timeout="20">
<authentication mode="None">
<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="20" />
</authentication>
In Global.asax.cs in Session_Start 超时值是 20min:
HttpContext.Current.Session.Timeout
但在我的控制器中实际设置为 1min:
System.Web.HttpContext.Current.Session.Timeout
HttpContext.Session.Timeout
我发现当我从 web.config 中删除类型为 (Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus
) 的 SitecoreHttpModule
时,超时工作正常,但我认为我无法永久删除它。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
<add type="Sitecore.Web.RewriteModule, Sitecore.Kernel" name="SitecoreRewriteModule"/>
<!-- !!!REMOVED MODULE!!! <add type="Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus" name="SitecoreHttpModule"/> -->
<add type="Sitecore.Resources.Media.UploadWatcher, Sitecore.Kernel" name="SitecoreUploadWatcher"/>
<add type="Sitecore.IO.XslWatcher, Sitecore.Kernel" name="SitecoreXslWatcher"/>
<add type="Sitecore.IO.LayoutWatcher, Sitecore.Kernel" name="SitecoreLayoutWatcher"/>
<add type="Sitecore.Configuration.ConfigWatcher, Sitecore.Kernel" name="SitecoreConfigWatcher"/>
...
</modules>
</system.webServer>
有什么地方可以为这个模块配置这个超时,或者有任何其他方法可以将会话超时设置为所需的值吗?
在 Sitecore 7 中,现在有多个地方您必须指定会话超时。
我会在您的 Web.config 中检查这些值。
<setting name="Authentication.ClientSessionTimeout" value="120" />
和
<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="120" />
然后
<sessionState mode="InProc" ... timeout="120" />
更多信息在这里:
Strange Timeout in Sitecore 7
问题出在 Sitecore Analytics 模块中的漫游器检测中。我的浏览器被识别为机器人,Sitecore.Analytics.Tracking.config
文件中有一些相关设置:
<!-- ANALYTICS ROBOTS SESSION TIMEOUT
The ASP.NET Session Timeout for auto detected robots.
When the automatic robot detection identifies a session as being a robot, the ASP.NET
Session Timeout is set to this value (in minutes).
Default: 1
-->
<setting name="Analytics.Robots.SessionTimeout" value="1" />
当检测到 bot 时超时设置为 1 分钟 以节省一些内存并且不会保持会话太长。
当我完全禁用 Analytics 或禁用 [=12=](在 Sitecore.Analytics.Tracking.config
文件中)时,超时将设置为所需的 20min 值。
正确的解决方案是正确分类浏览器(而不是作为机器人)。
关于此问题的另一个 post:
Sitecore Analytics Robots SessionTimeout causing premature session timeout
新用户的每个第一个请求都被视为可能的机器人请求。这就是为什么将这些请求的会话超时设置为 1 分钟的原因。
如果请求是由正确的最终用户执行的,您的页面上应该有 VisitorIdentification
代码,这实际上会导致对服务器的另一个后台调用并为用户延长会话。
只需添加
@using Sitecore.Mvc.Analytics.Extensions
...
@Html.Sitecore().VisitorIdentification()
到您的布局 .cshtml 文件。
第一个请求的超时将设置为 1 分钟,但随后会在 Sitecore 执行 VisitorIdentification
调用时自动更改回 20(或配置的任何值)。