在ASP.NET MVC3中拥有无会话控制器的一些场景是什么?

Pur*_*ome 16 asp.net-mvc controllers session-less asp.net-mvc-3

阅读Guru-Gu关于ASP.NET MVC3击中RC的博文,他说: -

无会话控制器支持

您现在可以指示是否希望Controller类使用会话状态 - 如果需要,是否要将其设置为读/写或readonly.read/write或readonly.

有人可以解释某些情况下有人可能希望拥有无会话控制器吗?或只读控制器?

我一直在创建一个单独的IIS网站,我用它处理所有静态图像/内容,然后让这个相同的网站关闭会话状态 ...所以没有通过网络发送cookie.这是一个类似的情况吗?

Dar*_*rov 25

顾评论了这一点.引用:

发行说明涵盖了更多内容(您可以从上面的下载链接下载).会话状态的设计使得一次只能发生来自特定用户/会话的一个请求.因此,如果您有一个同时发生多个AJAX回调的页面,它们将在服务器上以串行方式处理.减少会话意味着它们将并行执行.

这是ASP.NET中的一种已知方案.同一用户的会话对象不是线程安全的.这意味着,如果同一用户(相同的会话ID cookie)向使用会话的页面发送多个请求,则这些请求将排队并将按顺序处理,而不是并行处理.

  • @ RPM1984,像nick这样很少改变的东西可以进入表单票据的userData并通过自定义授权操作过滤器中的自定义通用主体获取,代理和徽章可能会被其他用户请求更改,因此这些需要从数据库.当然,为了避免在每个具有过期策略的请求缓存上命中它,并且为了更好的可伸缩性,需要从Web服务器分发和卸载该缓存. (7认同)
  • 登录的用户名存储在身份验证cookie中.就用户数据而言=> datastore. (6认同)
  • 当然,所有AJAX调用都应该是无会话的.顺便说一句,我讨厌会话,所以一般来说我会让我的整个应用程序没有会话:-) (4认同)