asp.net - Controller SessionStateBehavior 是只读的,我可以更新 session 变量

标签 asp.net asp.net-mvc session-variables

我希望如果 Controller 具有属性 SessionStateBehavior.ReadOnly 那么我无法更改此 Controller 内的 session 变量 但我可以改变值。

我尝试这个代码

 [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
    public class GLobalController : Controller
    {
      public  ActionResult Index()
        {
            Session["xxx"] = DateTime.Now.ToString();
            return View();
        }

最佳答案

参见Writing to a read only session in MVC 3+

该帖子声称该行为不一致。 我绝对可以使用 ReadOnly 写入 Controller 中的 session 。

我会这样对待它:

  • 必需表示您正在请求 session 上的独占锁(即,不对同一 session ID 的请求进行并行处理)
  • ReadOnly 意味着您正在请求 Session 上的非独占锁(即您的请求仍然需要等待具有独占锁的请求完成,但您可以并行处理具有非独占锁的请求。但是您需要确保您的代码不会写入 session 。框架不一定强制执行)

    我意识到这与http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatebehavior.aspx相反

    Read-only session state is enabled for the request. This means that session state cannot be updated.

    但似乎您实际上可以在某些情况下更新 session 状态。

  • 关于asp.net - Controller SessionStateBehavior 是只读的,我可以更新 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263086/

    相关文章:

    c# - Mvc Asp 排序项目

    c# - Automapper Entity Framework 外键为空

    c# - 如何存储任务的事件状态,并保持这些任务列表的永久性

    php - 我想将所有GET数据保存在SESSION中,我该怎么做?

    php - 刷新页面时 session 变量重置(注销用户)

    c# - 具有多列的 ASP.NET CheckBoxList

    c# - ASP.NET Core 2.0 依赖注入(inject)默认实例

    c# - 在 Ubuntu 下使用 mono 运行使用 VS2015 开发的 ASP.Net MVC 项目

    javascript - 从 ASP 传输数据 :NET MVC Controller to view

    c# - 这个 ASP.Net 身份验证模型有多安全?