2014-09-23 89 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時,這不是問題。

我保持這個問題的開放,以防其他人犯同樣的錯誤,我做了。