Azure и в процессе сессии
Мой сайт (ASP.Net 4.0 C#) размещен на сервере Azure с несколькими экземплярами. Мой режим состояния сеанса "InProc". Каким-то образом он не работает на экземплярах Azure, он не поддерживает состояние должным образом. Пожалуйста посоветуй.
С уважением, Вивек
3 ответа
Если у вас есть несколько экземпляров и вы используете сеанс InProc, то данные сеанса не будут работать - так как они не будут распределены между экземплярами.
Загрузка Azure балансирует ваши HTTP-запросы и может отправлять каждый клиентский HTTP-запрос на другой экземпляр сервера.
Если вы хотите использовать состояние сеанса, то вам нужно использовать общий поставщик состояния сеанса, например:
- поставщик состояния сеанса SQL (хотя я считаю, что он имеет некоторые ограничения для SQL Azure, поскольку он не может использовать код SQLAgent для периодической очистки состояния)
- демонстрационный поставщик состояния сеанса Azure Table (официально не поддерживается, а иногда и сообщается, что он содержит ошибки)
- последний поставщик состояния сеанса AppFabric (в настоящее время рекомендуется MS) - см. http://appfabricdemos.codeplex.com/releases/view/65427
Добавление к ответу Стюарта: AppFabric Cache - это кэширование как услуга, независимое от экземпляров виртуальных машин. Эта услуга была запущена несколько недель назад. Команда AppFabric предоставляет поставщика состояния сеанса, который использует кеш, требующий только простой web.config copy-n-paste.
По причинам, упомянутым Стюартом, я не буду зависеть от SQL Azure или Table Storage для вашего кеша сессии.
В учебном комплекте по платформе Windows Azure есть хорошая практическая лаборатория под названием " Создание приложений Windows Azure с помощью службы кэширования" - я бы прошел через это, поскольку одна из тем - настройка состояния сеанса с использованием AppFabric Cache.
Я предоставил немного больше информации в этом ответе.
Выберите способ управления сеансами в Windows Azure
Сервис AppFabric Caching сейчас работает.
Приветствия.