簡體   English   中英

重定向頁面后會話丟失

[英]Session lost after redirect page

為了描述該應用程序,它有一個默認頁面,它將從請求標頭中檢查用戶角色,然后將用戶 ID 分配到會話中並重定向到相應的頁面。 在所有其他頁面中,它會檢查會話是否有值,如果沒有則重定向默認頁面。

這已經在我的開發環境中進行了測試,並且沒有任何問題。 但是,當我將它托管在 IIS(AWS EC2 環境)中時。 它開始表現得很奇怪。 如果應用程序的綁定堅持默認。 我可以使用 http://localhost:26943/ 在服務器中瀏覽它,沒有問題。

默認綁定

但是,當我將綁定更改為主機名並使用http://testing.com/瀏覽時,我發現包含用戶 ID 的會話為空。

主機名綁定

我嘗試了幾種方法,包括:

  1. 在 Global.asax 中添加 Session["init"] = 0
  2. 在 web.config 中更改 cookieless=true
  3. 將 sessionState 的模式更改為“StateServer”
  4. 重定向到“~/page.aspx”而不是“page.aspx”

只更改 cookieless 方法對我有用,但它會在 URL 中顯示會話 ID,我懷疑這是正確的方法。

應用詳情:

  • .NetFramework 4.8
  • 使用 WCF 服務
  • 當前會話狀態信息是sessionState mode="InProc" cookieless="false" timeout="60"
  • 配置c:\\Windows\\System32\\Drivers\\etc\\hosts 添加127.0.0.1 testing.com
  • 使用 IE 11 測試

如果您需要更多信息,請告訴我。 急需幫助!

由於 AWS 在服務器場上? 然后,進程內會話將非常不穩定且有問題。 那些龐大的雲系統會多次關閉您的網絡服務器 - 關於下一頁將來自何處的瘋狂猜測。 如果頁面跨 IIS 服務器的不同實例提供服務?

您將丟失會話值。 如前所述,即使是一些未處理的代碼錯誤也會導致應用程序池重置。 所有這些問題加起來容易和頻繁地丟失會話。

我建議您采用基於 SQL 服務器的會話管理。 這應該消除可能導致 session() 重置的無數問題。 我喜歡進程內。 基於內存的速度很快,而且由於您沒有編寫下一個 Facebook,當然典型的服務器負載幾乎為零(同樣,這有利於使用進程內會話)。 但是,既然你有服務器群,那么一些應用程序錯誤會成為問題嗎? 采用基於 SQL 服務器的會話,如果不是 100% 的 session() 重置和丟失將消失 99。

這個建議更有保證,因為您使用 AWS 並且您幾乎無法控制它們運行的​​ VM,並且它們的幕后“結構”控制器可能會因故障安全和冗余問題而運行多個服務器副本。 因此,采用基於 SQL 的會話管理。

我認為您需要使用以下代碼行。

HttpContext.Current.Session["myvariable"]

我希望這對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM