2015-02-20 7 views
5

У меня есть тайм-аут сеанса установлен 20мин, но когда я пытаюсь получить это значение от действия я получаю 1мин вместо этого.Sitecore 7,5 MVC и HttpContext.Session.Timeout установлен в 1 мин

настройки Web.Config являются:

<sessionState mode="InProc" cookieless="false" timeout="20"> 

<authentication mode="None"> 
    <forms name=".ASPXAUTH" cookieless="UseCookies" timeout="20" /> 
</authentication> 

В Global.asax.cs в значении session_start тайм-аута является 20мин:

HttpContext.Current.Session.Timeout 

Но в действии в моем контроллере установлен в 1 мин:

System.Web.HttpContext.Current.Session.Timeout 
HttpContext.Session.Timeout 

Я обнаружил, что когда я удаляю SitecoreHttpModule, который имеет тип (Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus) из web.config, тайм-аут отлично работает, но я не думаю, что смогу удалить его навсегда.

<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> 

Есть ли место, где я могу настроить этот тайм-аут для этого модуля или есть другой способ установить тайм-аут сеанса требуемого значение?

+0

У вас включена поддержка Sitecore Analytics? –

+0

Да, Sitecore Analytics включена. –

+1

Я попытался отключить Google Analytics в Sitecore.Analytics.config <параметр name = "Analytics.Enabled" значение = "false" /> и таймаут работает нормально, он установлен в 20 минут. Любая идея почему? –

ответ

5

Каждый первый запрос для нового пользователя рассматривается как возможный запрос бота. Вот почему тайм-аут сеанса установлен на 1 минуту для этих запросов.

Если запрос выполнен надлежащим конечным пользователем, на вашей странице должен быть код VisitorIdentification, что фактически вызовет другой фоновый вызов на сервер и продлит сеанс для пользователя.

Просто добавьте

@using Sitecore.Mvc.Analytics.Extensions 
... 
@Html.Sitecore().VisitorIdentification() 

в файл .cshtml макета.

Таймаут будет установлен на 1 минуту для первого запроса, но затем автоматически будет изменен на 20 (или независимо от того, что настроено), когда Sitecore выполняет вызов VisitorIdentification.

1

В 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

3

Проблема заключается в обнаружении роботов в Sitecore Analyti cs. Мой браузер распознается как боты и есть некоторые настройки о том, что в 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" /> 

таймаут установлен в 1мине когда бот обнаружен, чтобы сэкономить mememory и не держать сессию слишком долго.

таймаут будет установлен на желаемое значение 20мин когда я либо отключить Analytics на всех или отключить Analytics.AutoDetectBotsSitecore.Analytics.Tracking.config файл).

Правильное решение для этого - правильно установить браузер (не как бот).

Другой пост по этому вопросу:

Sitecore Analytics Robots SessionTimeout causing premature session timeout

+3

Просто добавьте '@using Sitecore.Mvc.Analytics.Extensions' ...' @ Html.Sitecore(). VisitorIdentification() 'в ваш макет' .cshtml'. Тайм-аут будет установлен на 1 минуту для первого запроса, но затем автоматически изменится на 20 (или независимо от того, что настроено), когда Sitecore выполняет вызов «VisitorIdentification». –

+0

Комментарий от @MarekMusielak решил проблему для меня. Поскольку это другой подход к описанию в решении, я бы предложил вам добавить это как новый ответ. –

+0

@ KevinBrechbühl ответ добавлен, как вы просили –