會話數據不會在請求之間持續存在。這似乎只發生在使用來自MVC應用程序內的「非默認」區域的會話數據時。會話數據不會持續
該應用程序使用Redis支持的會話狀態服務器和服務堆棧身份驗證實現。
即使在身份驗證後(將用戶重定向到網站的新區域),默認區域內添加的會話數據似乎仍然存在。另外,還設置了兩個用戶cookie,分別是ss:id和ss:pid。
謝謝
會話數據不會在請求之間持續存在。這似乎只發生在使用來自MVC應用程序內的「非默認」區域的會話數據時。會話數據不會持續
該應用程序使用Redis支持的會話狀態服務器和服務堆棧身份驗證實現。
即使在身份驗證後(將用戶重定向到網站的新區域),默認區域內添加的會話數據似乎仍然存在。另外,還設置了兩個用戶cookie,分別是ss:id和ss:pid。
謝謝
如果會議沒有被保存我假設你沒有保存會話。請參閱有關如何Save a Session both inside and outside of ServiceStack的會議文檔。
對於遇到同樣問題的其他人,自定義redis會話狀態提供程序的配置包含設置爲false的'throwOnError'屬性。在代碼庫的早期階段,事實證明,一個不可序列化的類正在被添加到會話數據中,並導致這個問題,但由於throwOnError = false,它沒有被強調。
您沒有提供足夠的信息給任何人,以便有機會識別問題或能夠重現問題,例如,顯示什麼不工作的代碼,保存會話的位置,證明會話未被保存等。 – mythz
服務堆棧身份驗證可能有點誤導性,因爲身份驗證是遠程的。 正如我所提到的,該項目正在使用自定義Redis會話狀態提供程序。存儲信息的代碼很簡單: HttpContext.Current.Session [「searchModel」] 我可以看到該鍵在Action結束前的會話中。然後我在下一個動作中使用了一個RedirectToAction和一個斷點,並且會話數據的檢查顯示該鍵和項沒有持久。 –
HttpContext.Current.Session是ASP.NET的會話,它與ServiceStack會話無關,這是一個完全分離的單獨實現。 – mythz