我有一個應用程序一直在丟失會話的問題,我幾乎肯定它與應用程序池回收太頻繁有關。SQLServer會話狀態管理丟失應用程序池回收
我想嘗試一個進程外解決方案並配置了SQLServer sessionState,但是當我回收工作進程時,我的會話仍然被吹走。這裏是我的web.config
<sessionState cookieless="false" stateConnectionString="tcpip=localhost:42424" mode="SQLServer" sqlConnectionString="Data Source=(local;User ID=user;Password=password" timeout="180" />
我已經跑了相應的SQL腳本設置數據庫,我可以看到一個會話創建並存儲在數據庫中,但如果我改變的web.config或手動回收工作進程我的會話丟失。我究竟做錯了什麼??
注意,我收到與StateServer模式完全相同的行爲。我似乎正確地配置它,我可以看到狀態服務內存佔用越來越大,當我登錄....我試圖推動一個非序列化的對象,並收到錯誤....但是當我回收應用程序池或更改web.config中我失去了會話....
我也試圖建立Memcached的會議提供商(這是我真的想使用),可以在這裏找到:http://memcachedproviders.codeplex.com/releases/view/10468
,它也在做同樣的事情!我可以看到正在數據庫中創建的會話,當我試圖與非序列化對象進行交互時,我會得到與序列化有關的錯誤....但是當應用程序池被回收時,我失去了會話。
使一些記錄,我在事件查看器中看到這個之後: 事件代碼:1003事件消息:應用程序編譯開始
沒有人?我真的需要退出進程會話狀態工作....幫助!
也許你重置您的global.asax會影響您的會話數據? – Aristos
是你把會話序列化的一切嗎? –
你是如何確定會話丟失的?你如何使用會話狀態?如果您使用狀態服務器而不是SQL Server,是否也有相同的問題? –