2014-02-26 21 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”设置,这是建议反对。

相关问题