#asp.net-mvc #asp.net-mvc-3 #azure
#asp.net-mvc #asp.net-mvc-3 #azure
Вопрос:
Я замечаю, что в примерах azure, которые они используют:
<sessionState mode="Custom" customProvider="TableStorageSessionStateProvider">
Кто-нибудь может объяснить, для чего это используется в MVC3? Я очень смущен состоянием сеанса. Действительно ли мне нужно его использовать, если в моем приложении нет ничего похожего на корзину покупок? Нужно ли это, если я просто хочу выполнить простую аутентификацию? Я удалил код из своего web.config, и моя аутентификация, похоже, все еще работает.
Ответ №1:
Если вы публикуете свое приложение в Azure и каким-либо образом используете Session (включая временные данные MVC), то вам, вероятно, потребуется использовать какое-то центральное хранилище для сеанса, а не поставщик InProc по умолчанию, который просто сохраняет сеанс пользователя в собственной памяти приложения. В Azure вы можете использовать, среди прочего, SQL Azure или кэш AppFabric (все еще в CTP).
Вот хорошая лабораторная работа для AppFabric: http://msdn.microsoft.com/en-us/gg457897
И вот один для SQL Azure (не поддерживается): http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx
Это потому, что у вас может быть запущено несколько экземпляров или ваш экземпляр может быть перемещен в любой данный момент.
Похоже, что ваше приложение в данный момент не использует состояние сеанса, поэтому вам не нужно беспокоиться об этом. (хотя, помните, что словарь TempData использует Session под капотом)
Комментарии:
1. Действительно, при использовании MVC вам не нужно беспокоиться о состоянии сеанса. Проблемы возникают при использовании ASP.NET состояние сеансов.
2. @Tudor — Я не уверен, что это тот случай — TempData является распространенным элементом в MVC и с рекомендуемым шаблоном PRG — это отличный способ передачи информации и сообщений о состоянии. Поскольку временные данные зависят от asp.net состояние сеанса, тогда у вас возникает проблема.