Asp.net

對於 asp.net 中的會話狀態模式,InProc 或 SQL Server 哪個更好?

  • December 31, 2011

我正在開發一個 ASP.NET 網站。我想知道在會話狀態模式下哪個更好:InProc 還是 SQL Server?我需要聽聽你在這個問題上的經驗。

另一個問題是關於 cookieless 屬性。如果我將其設置為 true,我的網站是否存在安全漏洞?在我在 MSDN 站點中看到的所有範例中,此屬性都設置為 false。

最後一個問題是關於 Timeout 屬性的。當我將其設置為 InProc 模式時,此屬性是否會影響我的會話生命週期?

在什麼方面更好?

  • InProc 會話要快得多,要求更少(序列化),但是當您在多個 Web 伺服器上執行應用程序時無法使用;
  • Sql session慢很多,有對象序列化要求,但可以在多個web伺服器之間共享;

這是開發人員最應該關心的它們之間的主要區別。

您應該就此提出一個單獨的問題,因為它與前一個問題完全無關。

如果您關閉 cookie 會話 ID 處理,您將能夠看到會話 ID。但是,如果您檢查 cookie,您也可以。號碼在那裡。

會話 cookie 過期設置為瀏覽器會話,因此在持久性方面幾乎相同。

如果您知道對方的 Session ID,則可以劫持會話。如果您使用無 cookie 會話當然會更容易,因為您所要做的就是更改 URL…

複製 URL 和共享/保存(收藏夾)還有另一件事。我想我不必解釋這個問題。

預設情況下,無 Cookie 會話是false因為絕大多數瀏覽器都支持 cookie。僅當您知道您的客戶沒有 cookie 時才應打開它。

會話超時

無論會話類型如何,會話超時始終與會話到期有關。但是您必須注意,當您使用 SQL Express 版本時,SQL 會話狀態可能不遵循此設置,因為您需要 SQL Server 代理服務來丟棄過期的會話。您可以通過編寫自己的丟棄過期會話的 Windows 服務來緩解此問題。

引用自:https://stackoverflow.com/questions/8688047