代码之家  ›  专栏  ›  技术社区  ›  Mark

在ASP.NET MVC中指定只读会话

  •  23
  • Mark  · 技术社区  · 17 年前

    是否有任何方法可以指定给定的控制器或操作以只读方式使用会话状态?在“旧”ASP.NET中,我们曾经做过类似的事情:

    <%@ Page EnableSessionState="ReadOnly" %>
    

    是否存在ASP.NET MVC等效项?我希望允许我的应用程序同时提供来自同一个客户机的多个请求,在我的情况下完全关闭会话是一个选项。

    4 回复  |  直到 11 年前
        1
  •  8
  •   Community Mohan Dere    9 年前

    这里也提出了类似的问题: Disable Session state per-request in ASP.Net MVC

    接受的答案处理创建一个自定义路由处理程序,最终跳过绑定到会话的过程。这并不能完全回答您的问题(这是如何声明多个操作以使用只读会话访问),但似乎有足够的相关性值得一提。

        2
  •  26
  •   Liam Joshua    11 年前

    在ASP.NET MVC3中,现在有一个 SessionStateAttribute 您可以用它来修饰控制器,以强制所有操作进入读写、只读或无会话模式。

    http://msdn.microsoft.com/en-us/library/system.web.mvc.sessionstateattribute(v=VS.98).aspx

        3
  •  1
  •   Wyatt Barnett    17 年前

    这可能有点棘手——我的理解是设置会话状态是在IHttphandler级别发生的事情。使用自定义处理程序,可以通过使用标记接口(如IReadoNLysessionState)来指定会话状态,以声明它只需要只读会话状态。你可以试着把它附加到你的控制器上,看看它是怎么飞的。我怀疑这不会发生,因为ASP.NET MVC控制器在ihtphandler连接好之后就发生了,但值得一试。

    另一种解决方案可能是将会话状态变量包装在自己的类中,并公开只读版本以强制执行只读。通过多个请求访问它不应该是一个问题,但是如果您开始尝试从多个角度写入同一个会话变量,那么就可以获得竞争条件,这是正确的。

        4
  •  -2
  •   Freddy    17 年前

    在您的模型中,如何将您希望“只读”的数据设置为静态数据?通过这种方式,您可以使用相同的数据同时向MVC发出请求。