[英]Session lost after redirect page
為了描述該應用程序,它有一個默認頁面,它將從請求標頭中檢查用戶角色,然后將用戶 ID 分配到會話中並重定向到相應的頁面。 在所有其他頁面中,它會檢查會話是否有值,如果沒有則重定向默認頁面。
這已經在我的開發環境中進行了測試,並且沒有任何問題。 但是,當我將它托管在 IIS(AWS EC2 環境)中時。 它開始表現得很奇怪。 如果應用程序的綁定堅持默認。 我可以使用 http://localhost:26943/ 在服務器中瀏覽它,沒有問題。
但是,當我將綁定更改為主機名並使用http://testing.com/瀏覽時,我發現包含用戶 ID 的會話為空。
我嘗試了幾種方法,包括:
只更改 cookieless 方法對我有用,但它會在 URL 中顯示會話 ID,我懷疑這是正確的方法。
應用詳情:
如果您需要更多信息,請告訴我。 急需幫助!
由於 AWS 在服務器場上? 然后,進程內會話將非常不穩定且有問題。 那些龐大的雲系統會多次關閉您的網絡服務器 - 關於下一頁將來自何處的瘋狂猜測。 如果頁面跨 IIS 服務器的不同實例提供服務?
您將丟失會話值。 如前所述,即使是一些未處理的代碼錯誤也會導致應用程序池重置。 所有這些問題加起來容易和頻繁地丟失會話。
我建議您采用基於 SQL 服務器的會話管理。 這應該消除可能導致 session() 重置的無數問題。 我喜歡進程內。 基於內存的速度很快,而且由於您沒有編寫下一個 Facebook,當然典型的服務器負載幾乎為零(同樣,這有利於使用進程內會話)。 但是,既然你有服務器群,那么一些應用程序錯誤會成為問題嗎? 采用基於 SQL 服務器的會話,如果不是 100% 的 session() 重置和丟失將消失 99。
這個建議更有保證,因為您使用 AWS 並且您幾乎無法控制它們運行的 VM,並且它們的幕后“結構”控制器可能會因故障安全和冗余問題而運行多個服務器副本。 因此,采用基於 SQL 的會話管理。
我認為您需要使用以下代碼行。
HttpContext.Current.Session["myvariable"]
我希望這對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.