我有一个相当基本的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,表格显示在我的服务器上。
我不知所措。为什么我能够创建会话,但永远不会在该会话中更新/添加值?
答案 0 :(得分:1)
问题是在一个控制器中我有[SessionState(SessionStateBehavior.Required)]
(控制器工作正常),而在另一个控制器(那个工作不正常的控制器)中,我有[SessionState(SessionStateBehavior.ReadOnly)]
设置,这就是我的会话项永远不会更新的原因。当我的会话状态是InProc时,这不是问题。
我保持这个问题是开放的,以防其他人犯了同样的错误。