【问题标题】:What are some scenario's of having a Session-less Controller in ASP.NET MVC3?在 ASP.NET MVC3 中拥有无会话控制器的一些场景是什么?
【发布时间】:2011-05-07 13:38:11
【问题描述】:

阅读Guru-Gu's blog post about ASP.NET MVC3 hitting RC,他说:-

无会话控制器支持

您现在可以指明是否需要 使用会话状态的控制器类 – 如果是这样,您是否希望它成为 读/写或只读。读/写或只读。

有人可以解释一下某些情况下有人可能想要一个无会话控制器吗?还是只读控制器?

我一直在创建separate IIS website which I use to handle all static images/content and then have this same website have session state turned off ...因此不会通过网络发送任何 cookie。这是类似的情况吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 controllers session-less


    【解决方案1】:

    顾先生对此发表了评论。引用:

    发行说明对此进行了更多介绍(您 可以从下载中下载它们 上面的链接)。会话状态是 设计成只有一个请求 特定用户/会话发生在 时间。所以如果你有一个页面 多个 AJAX 回调发生在 一旦它们将被串行处理 服务器上的时尚。去 无会话意味着他们会 并行执行。

    这通常是 ASP.NET 中的一个已知场景。同一用户的会话对象不是线程安全的。这意味着如果同一个用户(相同的 session id cookie)向使用 session 的页面发送多个请求,这些请求将排队并且将被串行而不是并行处理。

    【讨论】:

    • 哇哦。我从来不知道这一点(我从经典的 ASP 开始就一直在使用 ASP)。哇。但是......这确实有道理:) 会话数据很重要,因此我认为需要“锁定”,从而强制进行串行处理。嗯...所以这将是使所有 Ajax ActionMethods 无会话的绝佳候选者:)
    • 当然,所有的 AJAX 调用都应该是无会话的。顺便说一句,我讨厌会话,所以总的来说我让我的整个应用程序没有会话:-)
    • 所以你在会话中根本不需要什么?登录用户?
    • 登录的用户名存储在身份验证cookie中。就用户数据而言 => 数据存储。
    • @RPM1984,像 nick 这样很少更改的东西可能会进入表单票证的 userData 并通过自定义授权操作过滤器中的自定义通用主体获取,rep 和徽章可能会被其他用户更改请求,因此需要从数据库中获取这些请求。当然,为了避免在每个请求缓存中使用过期策略,并且为了更好的可扩展性,这个缓存需要从 Web 服务器分发和卸载。
    猜你喜欢
    • 2011-07-25
    • 2023-03-16
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    相关资源
    最近更新 更多