2015-02-20 21 views
5

Tôi có thời gian chờ phiên được đặt thành 20min nhưng khi tôi cố gắng truy cập giá trị này từ hành động, tôi nhận được 1min thay thế.Sitecore 7,5 MVC và HttpContext.Session.Timeout đặt thành 1 phút

thiết lập Web.Config là:

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

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

Trong Global.asax.cs trong session_start giá trị của thời gian chờ là 20min:

HttpContext.Current.Session.Timeout 

Nhưng trong hành động trong bộ điều khiển của tôi được thiết lập để 1 phút:

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

Tôi đã tìm thấy rằng khi tôi loại bỏ SitecoreHttpModule đó là loại (Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus) từ web.config thời gian chờ hoạt động tốt nhưng tôi không nghĩ rằng tôi có thể loại bỏ nó vĩnh viễn.

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

Tôi có thể định cấu hình thời gian chờ này cho mô-đun này hay không còn cách nào khác để đặt thời gian chờ của phiên thành giá trị mong muốn?

+0

Bạn đã bật tính năng Sitecore Analytics chưa? –

+0

Có, Sitecore Analytics được bật. –

+1

Tôi đã cố gắng vô hiệu hóa Analytics trong Sitecore.Analytics.config và thời gian chờ hoạt động tốt, được đặt thành 20 phút. Bất kỳ ý tưởng tại sao? –

Trả lời

5

Mỗi yêu cầu đầu tiên đối với người dùng mới được coi là một yêu cầu bot có thể. Đó là lý do tại sao thời gian chờ của phiên được đặt thành 1 phút cho các yêu cầu đó.

Nếu yêu cầu được thực thi bởi người dùng cuối thích hợp, cần có mã VisitorIdentification trên trang của bạn mà trên thực tế sẽ tạo một lệnh gọi nền khác cho máy chủ và mở rộng phiên cho người dùng.

Chỉ cần thêm

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

đến file .cshtml bố trí của bạn.

Thời gian chờ sẽ được đặt thành 1 phút cho yêu cầu đầu tiên, nhưng sau đó tự động thay đổi thành 20 (hoặc bất kỳ cấu hình nào), khi Sitecore thực hiện cuộc gọi VisitorIdentification.

1

Trong Sitecore 7, hiện tại có nhiều địa điểm bạn phải chỉ định Thời gian chờ của phiên.

Tôi sẽ kiểm tra các giá trị này trong Web.config của bạn.

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

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

và sau đó

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

Thông tin thêm ở đây:

Strange Timeout in Sitecore 7

3

Vấn đề là trong việc phát hiện robot trong Sitecore Analyti cs mô-đun. Trình duyệt của tôi được công nhận là một bot và có một số thiết lập về điều đó trong Sitecore.Analytics.Tracking.config 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" /> 

Thời gian chờ được thiết lập để 1 phút khi bot được phát hiện để tiết kiệm một số mememory và không giữ phiên quá lâu.

Thời gian chờ sẽ được đặt thành giá trị mong muốn 20min khi tôi vô hiệu hóa Analytics hoặc tắt Analytics.AutoDetectBots (trong tệp Sitecore.Analytics.Tracking.config).

Giải pháp thích hợp cho việc này là để thu gọn trình duyệt chính xác (không phải là bot).

Một bài về vấn đề này:

Sitecore Analytics Robots SessionTimeout causing premature session timeout

+3

Chỉ cần thêm '@using Sitecore.Mvc.Analytics.Extensions' ...' @ Html.Sitecore(). VisitorIdentification() 'vào tệp' .cshtml' bố cục của bạn. Thời gian chờ sẽ được đặt thành 1 phút cho yêu cầu đầu tiên, nhưng sau đó tự động thay đổi thành 20 (hoặc bất kỳ cấu hình nào), khi Sitecore thực hiện cuộc gọi 'VisitorIdentification'. –

+0

Nhận xét từ @MarekMusielak đã giải quyết được vấn đề cho tôi. Vì đây là một cách tiếp cận khác với mô tả trong giải pháp, tôi khuyên bạn nên thêm câu trả lời này làm câu trả lời mới. –

+0

@ KevinBrechbühl trả lời được thêm khi bạn được hỏi –

Các vấn đề liên quan