【发布时间】:2013-02-15 03:15:57
【问题描述】:
我正在实现一个自定义 ASP.NET 角色提供程序,我想知道如果传入的用户已经在传入的角色中,它的 AddUsersToRoles 方法是否应该抛出 ProviderException。默认的 Microsoft SQL Server角色提供者 SqlRoleProvider 表现出这种行为,即使 official Microsoft documentation 不推荐它:
异常详细信息:System.Configuration.Provider.ProviderException:用户“myTestUser”已经在角色“myTestRole”中。
我认为我的提供者在这种情况下不抛出异常而只是在给定用户已经处于给定角色时继续前进会很有用;这样调用代码就不需要担心重复了。但是,在这种情况下,是否存在依赖于抛出异常的现有角色提供者使用代码?如果有,是否应该这样做,因为微软自己似乎并不推荐它?
如果我确实想实现类似于AddUsersToRoles 的方法,当用户已经在某个角色中时不会引发异常,我可以看到 3 种替代方法:
- 将其实现为
AddUsersToRoles,与默认SqlRoleProvider的行为不同。 - 在我的角色提供程序类中将其实现为新的
EnsureUsersInRoles方法,并使用((MyProvider)(Roles.Provider)).EnsureUsersInRoles()从我的调用代码中访问它。 - 只需在一个完全独立的类中实现它。
【问题讨论】:
标签: asp.net exception roleprovider