为什么我应该在我的ASP .Net MVC应用程序中使用HTTPContext Session State移开表单



我记得读过几个地方,人们不鼓励在ASP .Net Web应用程序中使用HTTPContext.Current.Session状态。

有人能解释一下最近这种趋势背后的一些原因吗?这有坚实的技术原因吗?

谢谢约翰·

首先,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)会话是不休息的。

会议真的违反了休息吗?

第三,会话是老派的。 您可以通过一些工作来升级应用程序,从而提高数据安全性和响应能力。"进入应用程序的每个 HTTP 请求意味着您的应用程序必须向进程外存储发出 2 个额外的网络请求 - 一个用于在处理请求之前加载会话,另一个用于在请求完成处理后存储会话"http://brockallen.com/2012/04/07/think-twice-about-using-session-state/

原因是"会话交换"。基本上,用户有可能最终获得其他用户的会话。其结果可能不被注意到,或者可能导致用户查看机密信息。

我没有来自MSDN的确切技术参考,但以前见过它发生在"野外"。快速的谷歌搜索会产生很多结果。下面是一个例子:http://forums.asp.net/t/1519279.aspx

但是,这完全取决于您如何实施会话。最后,会话只是缓存的一个版本,因此最佳实践将规定此缓存不会在系统内存中发生(默认版本为"InProc")。为了遵循最佳做法,建议设置一个专门用于维护由数据库支持的会话的服务器。

最后,它不是会话的设施,而是建议不要使用的"InProc"设置。

最新更新