Недостатки контейнера MVC 3 для временных данных - PullRequest
6 голосов
/ 03 февраля 2012

Хотя название вопроса выглядит немного субъективно, я уверен, что здесь не о чем обсуждать. В настоящее время я работаю над проектом MVC, где я использую контейнер TemData в некоторых областях. Когда я читаю документацию в MSDN, создается впечатление, что использование TempData создает сеанс и что после прочтения данных, которые мы храним в tempdata, больше нет. Я согласен с этой концепцией, однако то, что продолжало беспокоить меня сегодня утром, это то, как он себя ведет, когда вы размещаете свое приложение в среде веб-фермы.

Что делать, если запрос GET передается серверу 1, который создает TempData, а последующий запрос GET / POST отправляется серверу 2.

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

Любой вклад будет высоко оценен ...

ура!

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

После некоторых исследований сценарий, который я разместил в моем вопросе, неизбежен, если вы используете переменные Session в своих приложениях.Лучшее, что мы можем сделать, - это уменьшить объем данных, которые мы могли бы хранить в сеансе, кроме того, если нам все еще нужно использовать сеансы в среде webfarm / multi-server, есть некоторые изменения конфигурации, которые можно внести.Вот очень полезная статья о том, как можно управлять хранилищем сеансов.

Сеанс ASP.NET, ответы на часто задаваемые вопросы

0 голосов
/ 08 марта 2012

Да, по умолчанию ASP.NET MVC хранит TempData в сеансе. Если для сеанса используется inproc (по умолчанию), и вы находитесь в веб-ферме, вы можете не получить правильные данные сеанса для следующего запроса. Если вы находитесь в веб-форме, используйте другой метод хранения сеанса, например, сервер состояний или сервер sql.

...