Windows

IIS 中的會話處理選項

  • October 6, 2010

使用現代 .NET IIS Web 體系結構進行會話處理有哪些選項?

我了解 IIS 的本機會話支持在重新啟動時會失去會話。此外,Microsoft 建議將會話儲存在數據庫中,這是我的首選解決方案。

我正在嘗試建構一個高度可用的 .NET IIS 平台,它可以為第三方應用程序水平擴展。該應用程序是在外部開發的,雖然我可以推動儲存在數據庫中,但這在即時截止日期內是不可能的。

第三方建議使用持久會話,這是我避免的。粘性會話會降低可用性,因為當 Web 伺服器變得不可用時,它將導致以前使用它的客戶端出現可訪問性問題。此外,它減少了負載平衡功能,因為單個伺服器可能接收到比其他伺服器更多的請求。IIS 在重新啟動時仍會失去會話,這是我希望消除的。我也不想將會話儲存在客戶端的 cookie 中。

我希望實現完全的高可用性,同時仍然允許將應用程序部署到空閒伺服器而不會產生影響。此外,全負載平衡。我能否在不重寫應用程序的情況下在此技術平台上啟用此功能?我有什麼選擇?

ASP.net 2.0 及更高版本支持將會話儲存在 SQL 伺服器中,只需更改 web.config 中的 SessionState 提供程序並使用 aspnet_regsql.exe 設置 SQL 數據庫。您可以在MSDN - 會話狀態提供程序頁面上閱讀有關配置會話狀態提供程序的更多資訊。

更新: MSDN - 會話狀態模式頁面上還提供了更容易閱讀的分步說明。

我們在 Ohio Linux Fest 上討論了 .NET 會話狀態提供程序的模組化,我提到有人可以為 .NET 會話狀態創建分佈式記憶體記憶體。一位客戶今天早些時候問我這個問題,我發現這個產品似乎就是這樣做的。

引用自:https://serverfault.com/questions/177539