MVC会话SQLServer不允许更新

时间:2014-09-23 23:37:20

标签: c# asp.net asp.net-mvc-4 session

我有一个相当基本的MVC4网站。我正在使用SQL Server会话,如下所示:

<sessionState 
      mode="SQLServer" regenerateExpiredSessionId="true" timeout="1440"
      sqlConnectionString="Password=pass; Persist Security Info=True; User ID=user; Data Source=server;" 
      />

当用户登录时,我会向会话中添加一个项目,如下所示:

Session["test"] = 3;

工作正常,当我尝试向会话添加新项目或更新现有值时出现问题,即:

Session["test"] = 4;
Session["faux"] = 8;

在我调试时,初始"test"值永远不会更新,并且永远不会添加"faux"值。不会抛出任何错误,如果我进入/更新更新/添加代码,会话看起来就像是在更新,但如果我进入另一个函数并尝试查询会话,则只有原始值存在于会议。

我按照这些说明操作:MSDN,表格显示在我的服务器上。

我不知所措。为什么我能够创建会话,但永远不会在该会话中更新/添加值?

1 个答案:

答案 0 :(得分:1)

问题是在一个控制器中我有[SessionState(SessionStateBehavior.Required)](控制器工作正常),而在另一个控制器(那个工作不正常的控制器)中,我有[SessionState(SessionStateBehavior.ReadOnly)]设置,这就是我的会话项永远不会更新的原因。当我的会话状态是InProc时,这不是问题。

我保持这个问题是开放的,以防其他人犯了同样的错误。