2014-09-23 86 views
1

我有一个相当基本的MVC4网站。我使用的是SQL Server会话就像这样:MVC会话SQLServer不允许更新

<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

由于我无法在我的本地重现问题,并且下面的答案无效,所以我会删除答案。这很奇怪。 ASPState数据库设置可能有问题。 – Hatjhie 2014-09-25 16:15:55

回答

1

问题是,在一个控制器中我有[SessionState(SessionStateBehavior.Required)](这是控制器工作正常),而在另一个控制器(不能正常工作的控制器)中,我设置了[SessionState(SessionStateBehavior.ReadOnly)],这就是为什么我的会话项目从未被更新。当我的会话状态是InProc时,这不是问题。

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