2014-02-26 25 views
2

我記得讀了幾個地方,人們都勸阻使用ASP.Net Web應用程序中的HTTPContext.Current.Session狀態。爲什麼我應該在ASP.Net MVC應用程序中使用HTTPContext會話狀態移走窗體?

有人可以解釋一些背後的最新趨勢的原因嗎? 有沒有可靠的技術原因呢?

感謝, JohnB

+0

它不是最近的趨勢。對於任何你不會放在用戶cookie中的東西,使用會話一直都會聞到。請參閱下面的Travis J的答案。另外,會話使用可能會被諸如負載平衡之類的事情所擊敗。 – Maess

+0

[在ASP.NET MVC中避免使用會話狀態是否是一種好的做法?如果是,爲什麼以及如何?](http://stackoverflow.com/questions/5220980/is-it-a-good-practice-to-avoid-using-session-state-in-asp-net-mvc-if -yes-why-a) – Win

回答

0

首先,MVC不是webforms,它的意思是無狀態的。

http://www.wintellect.com/blogs/jprosise/thoughts-on-asp-net-s-new-mvc-framework

其次,MVC是自然界 http://dotnetslackers.com/articles/aspnet/AnArchitecturalViewOfTheASPNETMVCFramework.aspx 休息和根據堆棧溢出(LOL)會話不是寧靜。

Do sessions really violate RESTfulness?

三,會議是老同學。您可以通過一些工作升級您的應用程序,同時提高數據安全性和響應能力。 「應用程序中的每個HTTP請求都意味着您的應用程序必須向超出程序存儲區發出2個額外的網絡請求 - 一個用於在處理請求之前加載會話,另一個用於在請求完成處理之後再次存儲會話」 http://brockallen.com/2012/04/07/think-twice-about-using-session-state/

+0

感謝您提供有用信息的快速反饋。 – JohnB

0

原因是 「會話交換」。基本上,用戶有可能結束其他用戶的會話。這可能會導致用戶查看機密信息。

我從MSDN沒有一個確切的技術參考,但已經看到它發生在「野外」之前。快速谷歌搜索會產生很多結果。這裏有一個例子:http://forums.asp.net/t/1519279.aspx

但是,這一切都取決於你如何實現你的會話。最後,會話只是緩存的一個版本,因此最佳實踐會指示此緩存不會發生在系統內存中(默認版本爲「InProc」)。爲了遵循最佳實踐,建議設置專門用於維護由數據庫支持的會話的服務器。

最後,它不是一個會話的設施,但它是「InProc」設置,這是建議反對。

相關問題