Я прочитал о сохранении состояния сеанса out-of-process
, но все еще в памяти, настроив веб-приложение для использования поставщика, такого как StateServer
У меня есть List<int>
, который содержит accountIDs
, который яхотел бы быть общим для всех серверов в веб-ферме.Список - это не данные сеанса, относящиеся к какой-либо конкретной учетной записи, это глобальный список, который мне нужен в памяти (но, вероятно, вне процесса), чтобы каждый сервер в ферме мог проверять его для каждого запроса, чтобы увидеть,он содержит accountID
.
Можно ли совместно использовать эти данные так же, как и состояние сеанса?Пожалуйста, не могли бы вы рассказать, как это сделать?
Это хорошее решение?Будет ли снижение производительности многих серверов, пытающихся получить доступ к одному и тому же списку?
РЕДАКТИРОВАТЬ: дополнительно в ...
В моем приложении учетные записи пользователей имеют _accountStatus , который, если установлено приостановлено , используется приложением для ограничения возможностей пользователя. _accountStatus сохраняется в специальном билете аутентификации.Проблема заключается в том, что пользователи могут оставаться в системе, они могут войти в систему сегодня, уйти и вернуться через месяц, и при этом войти в систему. Тем временем администратор сайта может заблокировать свою учетную запись, но из-за того, что _accountStatus сохраняетсяв билете аутентификации он теперь неверен, и у пользователя все еще есть доступ, которого он не должен иметь.
Поэтому, когда пользователь _accountStatus изменяется администратором, его _accountID добавлено к the list
.Затем по каждому запросу список проверяется.Если учетная запись находится в списке, она должна перезагрузить ее _accountStatus из базы данных (которая всегда имеет правильное значение) и обновить билет проверки подлинности.
Так что да, возможно, сохранение списка в SQLСервер - это лучшее решение.
Еще одним решением может быть сохранение _accountStatus не в билете аутентификации, а в сеансе.Когда начинается новый сеанс, он может быть загружен.Но теперь возникает проблема, что если администратор решил приостановить учетную запись во время сеанса пользователя.Как приложение может получить доступ к сеансу для этого пользователя и обновить _accountStatus извне HttpApplication
?Или между запросами пользователя, если вы понимаете, о чем я?