Как сделать Roles.ApplicationName потокобезопасным? - PullRequest
2 голосов
/ 11 марта 2011

В настоящее время я пишу приложение для управления пользователями, которое администрирует пользователей в одном экземпляре aspnetdb.Этот единственный экземпляр содержит несколько «приложений», у всех из которых есть роли, назначенные для отдельных приложений.

Поскольку каждый пользователь может быть участником нескольких приложений, я использую Roles.ApplicationName для циклического просмотра каждого настроенного приложения, а затем определяю, в каких ролях они состоят.После проверки каждого приложения я установил Roles.ApplicationName обратно на исходное приложение, которое является приложением управления.

Проблема, с которой я сталкиваюсь, заключается в том, что каждый из нескольких пользователей просматривает отдельное приложение и делает запрос на Roles.GetAllRoles().В большинстве случаев возвращающиеся роли относятся к предполагаемому приложению, но иногда неправильные роли приложения возвращаются из-за других циклов запросов по Roles.ApplicationName для приложения.

С тех пор я читал, что Roles.ApplicationNameне является поточно-ориентированным и поэтому не должен использоваться в веб-приложении, но я бы предпочел иметь решение этой проблемы, а не переписывать образец для подражания в приложении.

Кроме того, приложения aspnetdb создаются через этосистема администрирования, и поэтому я не могу создать несколько RoleProviders, по одному на приложение.

1 Ответ

0 голосов
/ 23 марта 2011

Почему бы вам не написать обертку, чтобы сделать это, изо всех сил вы могли бы реализовать свой собственный поставщик ролей, а затем поставить соответствующую синхронизацию на месте.

...