2011-07-14 84 views
1

我部署使用Apache /是mod_mono/MONO(2.8.1)的ASP.NET MVC 2應用程序,它使用內置的ASP.NET驗證框架。MONO/ASP.NET身份驗證持久

當我重新啓動Apache,或者使用的是mod_mono控制面板重新啓動單服務器的過程中,用戶已註銷。我不希望發生這種情況。

我使用自定義配置文件/會員/角色提供者(即由Redis的數據庫支持),而這些目前有一個最低限度的實現。然而,我看不出我的問題在哪裏,但是我錯過了一些明顯的東西?

我注意到,當用戶登錄回來,所以我想在那裏.MONOAUTH cookie的變化值是一些持久性需要發生的情況並非如此。

任何解決方案或相關文檔的指針都會很棒!

回答

3

注:我不知道,如果下面的信息時,您使用的是成員資格提供不同 - 它可能是會話狀態是由成員提供者本身仍然存在。

您可能正在使用「進程內」會話狀態存儲。這意味着無論何時重新啓動Web服務器進程,您都將清除存儲在Web服務器進程內存空間中的所有會話信息。

爲了避免殲滅會話信息,您可以移動到使用過程外的一個會話狀態服務器,無論是作爲一個內存中運行的服務(見下面的單聲道版本)或SQL Server上。否則,也有許多使用替代存儲機制非官方定製會話存儲供應商(如MongoDB的等)的

我發現你可能想要的東西,這是本單ASP.NET會話狀態服務器:http://manpages.ubuntu.com/manpages/gutsy/man1/asp-state2.1.html

作爲第一步,請在system.web - > sessionState屬性中查看您的web.config。如果它設置爲mode =「InProc」,那麼你的問題。它看起來更像是:

<sessionState 
mode="StateServer" 
stateConnectionString="tcpip=server:port" 
stateNetworkTimeout="number of seconds"/> 
+0

感謝您的快速響應!我相信你已經把我放在了正確的軌道上。一旦我進一步調查,我會給你一個投票,並添加更多的評論...我剛剛從這個任務暫時撤離。 –

+0

解決方案:手動設置validationKey和decryptionKey:。這似乎是一個單聲道的錯誤,它們在自動生成(這是默認設置)時會在服務器重置時採用不同的值。 –

3

解決方案:設置的validationKey和decryptionKey手動:

<的machineKey的validationKey = 「blahblah」 decryptionKey = 「blahblah」/ >

我覺得這可能是一個單聲道中的錯誤,這些錯誤會在自動生成(這是默認設置)時在服務器重置時採用不同的值。

相關問題