2012-02-07 242 views
1

我們有一個使用FormsAuthentication的MVC Web應用程序,並且還在會話變量中存儲了一些變量。最近在會話變量丟失的情況下,我們遇到了一些情況,但用戶仍然登錄。一個快速的Google讓我看到一些SO文章提到在Proc Session State中經常丟失,如果我們要求它繼續存在,我們應該考慮轉向非In Proc解決方案。ASP.NET在Proc會話狀態

來自經典的ASP背景,我們依賴會話狀態進行會話的整個生命週期,似乎有點莫名其妙,我現在根本無法依賴它。毫無疑問,在Proc會話狀態下,如果任何人都可以在帽子下丟失,那麼這對任何人都沒有價值嗎?我錯過了什麼嗎?

我意識到將它存儲在SQL服務器中有好處,但對於流量小的小型web應用程序,In Proc是一個理想的解決方案,可以依賴它。

回答

1

ASP.NET會話狀態能夠在與ASP.NET主機進程不同的進程中運行。如果會話狀態處於單獨的進程中,則ASP.NET進程可以在會話狀態進程保持可用時進出。當然,您仍然可以在類似於傳統ASP的過程中使用會話狀態。

您不必使用SQL服務器將會話數據存儲在進程外,您可以使用進程外狀態服務器,該進程狀態服務器可以與Web服務器位於同一服務器的內存中。

你可以閱讀更多關於如何在http://msdn.microsoft.com/en-us/library/ms972429.aspx

+0

優秀,只是我是什麼後配置出過程會話狀態。 – littlecharva 2012-02-08 12:04:25

+0

鏈接是否真的指向2000年12月28日寫的頁面?這裏有另外一個指向更新的信息,tho仍frmw 3.0 ... http://msdn.microsoft.com/en-us/library/87069683%28v=vs.85%29.aspx – zukanta 2013-08-19 17:20:12

1

據我所知,在重新編譯應用程序和回收應用程序池之後,in-proc會話狀態會丟失。如果沒有足夠的內存或定期重新啓動時間間隔,應用程序池可以被回收。