【问题标题】:Why should I move away form using HTTPContext Session State in my ASP .Net MVC applications?为什么我应该在我的 ASP .Net MVC 应用程序中使用 HTTPContext 会话状态离开表单?
【发布时间】:2014-02-26 23:16:45
【问题描述】:

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

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

谢谢, 约翰B

【问题讨论】:

标签: asp.net asp.net-mvc httpcontext


【解决方案1】:

首先,MVC 不是网络表单,它是无状态的。

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/

【讨论】:

  • 感谢您提供有用信息的快速反馈。
【解决方案2】:

原因是“会话交换”。基本上,用户有可能以其他用户的会话结束。这样做的结果可能会被忽视,或者可能导致用户查看机密信息。

我没有来自 MSDN 的确切技术参考,但之前已经看到它“在野外”发生过。快速的谷歌搜索会产生很多结果。这是一个例子:http://forums.asp.net/t/1519279.aspx

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

最后,它不是会话的工具,而是“InProc”设置,建议不要这样做。

【讨论】:

    猜你喜欢
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2012-11-07
    • 2014-01-03
    • 2016-09-28
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多