2015-02-20 22 views
5

ho il timeout di sessione impostato 20min ma quando provo ad accedere a questo valore da azione mi sto 1min invece.Sitecore 7.5 MVC e HttpContext.Session.Timeout impostato a 1 min

impostazioni Web.Config sono:

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

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

In Global.asax.cs di valore Session_Start di timeout è 20min:

HttpContext.Current.Session.Timeout 

Ma in azione nel mio controller è impostato su 1min:

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

Ho scoperto che quando rimuovo SitecoreHttpModule che è di tipo (Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus) da web.config, il timeout funziona correttamente ma non penso di poterlo rimuovere in modo permanente.

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

C'è un posto che posso configurare questo timeout per questo modulo o c'è qualche altro modo per impostare il timeout di sessione per valore desiderato?

+0

Hai attivato Analytics Sitecore? –

+0

Sì, Analytics Sitecore sono abilitati. –

+1

Ho provato a disabilitare Analytics in Sitecore.Analytics.config e timeout funziona bene, è impostato su 20min. Qualche idea del perché? –

risposta

5

Ogni prima richiesta per un nuovo utente è considerato come una possibile richiesta di bot. Ecco perché il timeout della sessione è impostato su 1 minuto per tali richieste.

Se la richiesta viene eseguita dall'utente finale appropriato, nella pagina deve essere presente il codice VisitorIdentification che di fatto causerà un'altra chiamata in background al server ed estenderà la sessione per l'utente.

Basta aggiungere

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

al file .cshtml layout.

Il timeout sarà impostato su 1 minuto per la prima richiesta, ma poi tornerà automaticamente su 20 (o qualsiasi altra cosa sia configurata), quando Sitecore effettua la chiamata VisitorIdentification.

1

In Sitecore 7 ora ci sono più posti che devi specificare il Timeout della sessione.

Vorrei verificare questi valori nel proprio Web.config.

<setting name="Authentication.ClientSessionTimeout" value="120" /> 

e

<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="120" /> 

e poi

<sessionState mode="InProc" ... timeout="120" /> 

Maggiori informazioni qui:

Strange Timeout in Sitecore 7

3

Il problema è nel rilevamento robot in Sitecore Analyti modulo cs. Il mio browser è riconosciuto come un bot e ci sono alcune impostazioni su che in Sitecore.Analytics.Tracking.config del file:

<!-- 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" /> 

il timeout è impostato per 1min quando viene rilevato bot per risparmiare un po mememory e di non tenere seduta troppo a lungo.

Il timeout sarà impostato desiderato valore 20min quando sia Analytics disabilitare affatto o disattivare (file in Sitecore.Analytics.Tracking.config) Analytics.AutoDetectBots.

La soluzione corretta è quella di clasificare il browser correttamente (non come un bot).

un altro post su questo argomento:

Sitecore Analytics Robots SessionTimeout causing premature session timeout

+3

Basta aggiungere '@using Sitecore.Mvc.Analytics.Extensions' ...' @ Html.Sitecore(). VisitorIdentification() 'al proprio file' .cshtml' di layout. Il timeout verrà impostato su 1 minuto per la prima richiesta, ma poi tornerà automaticamente a 20 (oa qualsiasi altra configurazione), quando Sitecore esegue la chiamata 'VisitorIdentification'. –

+0

Il commento di @MarekMusielak ha risolto il problema per me. Poiché si tratta di un approccio diverso alla descrizione nella soluzione, suggerirei di aggiungere questa come una nuova risposta. –

+0

@ Risposta di KevinBrechbühl aggiunta come richiesto –