如何使Roles.Application Name线程安全?

时间:2011-03-11 11:54:30

标签: asp.net membership roles roleprovider

我目前正在编写一个用户管理应用程序,它在单个aspnetdb实例中管理用户。此单个实例包含多个“应用程序”,它们都具有针对各个应用程序分配的角色。

由于每个用户都可以是多个应用程序的成员,因此我使用Roles.ApplicationName遍历每个已配置的应用程序,然后确定他们所属的角色。检查每个应用程序后,我将Roles.ApplicationName设置回原始应用程序,即管理应用程序。

我遇到的问题是当多个用户每次查看单个应用程序并且发出Roles.GetAllRoles()请求时。大多数情况下,返回的角色是针对预期的应用程序,但有时错误的应用程序的角色会因为其他请求在每个应用程序Roles.ApplicationName上循环而返回。

我已经读过Roles.ApplicationName不是线程安全的,因此不应该在Web应用程序中使用,但我更愿意有一个解决方案而不必在应用程序中重写角色模型。 / p>

此外,aspnetdb应用程序是通过此管理系统创建的,因此我无法创建多个RoleProviders,每个应用程序一个。

1 个答案:

答案 0 :(得分:0)

为什么不编写一个包装器来执行此操作,您可以实现自己的角色提供程序,然后进行适当的同步。