2

我正在爲體育俱樂部建立一個網站。該俱樂部不感興趣將他們的託管移動到不同的網絡主機,所以我堅持與當前的主機。我將新的Web應用程序部署到了主機上,但經過幾個小時的測試後,顯然有些事情在登錄和會話狀態方面表現怪異。Web主機有奇怪的設置,需要替代會話狀態建議

每當我花費超過10分鐘閒置時,突然我的MVC驗證令牌將停止解密。我進入IIS並將機器密鑰設置爲靜態值,並且此問題消失,但很明顯,他們將ASP.NET空閒超時設置設置爲10分鐘。這意味着如果網站上沒有任何活動,則每10分鐘的InProc會話數據將被銷燬。我向主機提交了支持憑單,但他們不願意在我的應用程序池中爲我更改該設置,並指出「此時無法在服務器上更改此設置,因爲增加這可能會影響關閉性能(原文如此)服務器」。

俱樂部有點小,最多有500名俱樂部成員,很少會員會經常訪問網站,所以我幾乎可以保證10分鐘的超時時間一天會發生多次,而且我將會話超時設置爲60分鐘,因此,如果網站的唯一用戶在給定時間閒置了10分鐘,那麼讓網站清除會話並不是一個好主意。

我的第一個想法是使用SQL會話存儲。我從來沒有用過它,但我知道它存在。但是,存在的一個警告是我們僅限於350MB的SQL存儲。雖然這可能比現在需要的還要多,但我想我們可能會接近極限。我並不預期在會話中存儲大量數據,與貝寶和購物車進行交互時可能只有幾件事(也許是系統消息),所以這可能不是一個大問題?

我們有無限的磁盤空間,所以我想到的另一種選擇是可能寫一個定製的基於磁盤的會話存儲解決方案。有什麼理由可能不比SQL更好嗎?

最後,我有一個完全離牆的「哦,上帝,我不敢相信我正在考慮這樣做」的想法,這將是定期在每一頁上有一個AJAX調用(比如說,每一個8分鐘)「ping」一個非緩存的輕量級MVC操作,只是爲了保持服務器活着。這可能會工作,我想,除了一個場景某人:

  1. 去購物頁面並創建一個購物車
  2. 被轉移到PayPal
  3. 花費10+分鐘PayPal的屏幕上無論什麼原因,而沒有人在網站上
  4. 回來看到他們的車消失。

在這種情況下,我可能只是將購物車移動到數據庫。

那麼......想法,意見,建議?我對主持人不讓我改變這個設置感到非常沮喪,我的第一本能是找到另一個主持人,但正如我之前所說的,俱樂部對主持人有一些奇怪的依戀,並且不想移動到其他地方。

在此先感謝!

回答

1

的一點想法:

在問題:是很常見的會議要在負載平衡系統「丟失」。這可能會通過移動到一個指定的服務器(如果託管公司現在不這樣做,並提供選項

Cookie會話:如果您使用.Net成員資格,您可以更改登錄過程中使用的cookies,這帶有明顯的一些用戶不允許Cookie陷阱。同樣,一個考慮因素。目前的工作,他們希望用戶在保持登錄學校網站。

**與cookies您的登錄名是穩定的,但你的會議將不會有更好的保存。所以你運氣不好,在會話狀態中有很多值得指望的地方

最終的結果是,您可以通過IP或Cookie跟蹤用戶,但除非這是可解決的負載平衡問題,否則您將前往無會話應用程序。

+1

我已經花了幾天的時間考慮你的評論關於去永久。我不想沿着這條路走下去,因爲Session很容易使用。但在玩過幾個替代品後,我拋棄了原來的問題,顯而易見,會話對我來說永遠不可靠,而且我需要轉向無會話的應用程序。幸運的是,只有一件重要的事情需要重構,我可以認爲應用程序的其餘部分是無時間的。 –

+0

我明白你的痛苦。以「永久登錄」的含義來處理一個項目。結果是Sessions永遠不可能在登錄範圍內可靠。首先我們付出努力來維護會話對象。一段時間後,維護邏輯是它自己的維護巨人。畢竟我們放棄了會議。祝你好運。這並不容易。 –