2014-09-23 1 views
1

У меня есть довольно простой веб-сайт MVC4. Я использую сессий SQL Server, например, так:MVC Session 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

ответ

1

Проблема заключалась в том, что в одном контроллере у меня был [SessionState(SessionStateBehavior.Required)] (который был контроллером, который работал нормально), а в другом контроллере (тот, который не работал должным образом) у меня был [SessionState(SessionStateBehavior.ReadOnly)], поэтому моя сессия предметы никогда не обновлялись. Это не было проблемой, когда мое состояние сессии было InProc.

Я держу этот вопрос открытым в случае, если кто-то другой совершает ту же ошибку, что и я.