MVC4中的SimpleMembershipProvider在初始化时会对方法抛出NotSupportedException

ang*_*sen 2 asp.net asp.net-mvc-4 simplemembership

我正在使用ASP.net MVC4模板的内置SimpleMembership,并希望创建一个管理面板来重置用户群上的密码和类似操作.

我使用SecurityGuard.MVC4 nuget作为起点,并在大多数操作中获得NotSupportedException.SecurityGuard使用控制器的Membership属性在SimpleMembershipProvider上调用诸如GetAllUsers(),GetUser()和ResetPassword()之类的方法,并且它们都抛出NotSupportedException.从文档中看,这似乎是设计的:

SimpleMembershipProvider.GetAllUsers

注意:如果使用对WebSecurity.InitializeDatabaseConnection()方法的调用初始化SimpleMembershipProvider类,则不支持此方法,并将抛出NotSupportedException异常.但是,如果尚未调用WebSecurity.InitializeDatabaseConnection()方法,并且已将站点配置为使用标准ASP.NET成员资格提供程序,则此方法将传递给标准成员资格提供程序.

我错过了什么?看来我需要选择使用WebSecurity来处理WebSecurity.CreateUser()之类的标准内容并直接使用提供程序吗?

我可以解决这个问题,但我很担心为什么我不能同时解决这个问题?

Eri*_*sch 6

SimpleMembership故意设计成......好吧,简单. WebSecurity使用SimpleMembership,并使用派生自的ExtendedMembershipProviderSimpleMembership.

从本质上讲,SimpleMembership不实现WebSecurity中不存在的任何功能,而GetAllUsers就是其中之一.是的,这是设计的.

你有几个选择.所有这些都是解决方法.

  1. 您可以简单地执行自己的查询以获取所有用户.
  2. 您可以创建从SimpleMembership派生的自己的成员资格提供程序并实现这些功能
  3. 您可以返回SqlMembershipProvider(或Universal Providers)(但避免使用WebSecurity)