Asp.net MVC4中的SimpleMembershipProvider在初始化时对方法抛出NotSupportedException

Asp.net MVC4中的SimpleMembershipProvider在初始化时对方法抛出NotSupportedException,asp.net,asp.net-mvc-4,simplemembership,Asp.net,Asp.net Mvc 4,Simplemembership,我正在使用ASP.net MVC4模板的内置SimpleMembership,并希望创建一个管理面板来重置用户基础上的密码和类似操作 我使用SecurityGuard.MVC4 numget作为起点,并且在大多数操作中获得NotSupportedException。SecurityGuard使用控制器的Membership属性调用SimpleMembershipProvider上的方法,如GetAllUsers()、GetUser()和ResetPassword(),它们都抛出NotSuppor

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

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

注意:如果SimpleMembershipProvider类已使用初始化 调用WebSecurity.InitializeDatabaseConnection()方法,如下所示 方法不受支持,将引发NotSupportedException 例外。但是,如果WebSecurity.InitializeDatabaseConnection() 方法,并且如果已将站点配置为 如果使用标准ASP.NET成员资格提供程序,则传递此方法 通过标准会员资格提供商

我错过了什么?似乎我需要在使用WebSecurity作为WebSecurity.CreateUser()之类的标准工具和直接使用提供程序之间做出选择


我可以解决这个问题,但我主要困惑的是为什么我不能同时获得这两种功能?

SimpleMembership的设计初衷是。。嗯,很简单
WebSecurity
使用
SimpleMembership
,并使用衍生自
SimpleMembership
ExtendedMembershipProvider

本质上,SimpleMembership不实现Web安全中不存在的任何功能,GetAllUsers就是其中之一。是的,这是设计的

你有几个选择。所有这些都是变通办法

  • 您只需执行自己的查询即可获得所有用户
  • 您可以创建从SimpleMembership派生的自己的成员资格提供程序并实现这些功能
  • 您可以回到SqlMembershipProvider(或通用提供程序)(但避免Web安全性)

  • 感谢您的澄清和解决方案。我可能会获得自己的会员资格提供者。我只是担心自己的滚动会带来安全问题。我仔细查看了SimpleMembershipProvider的反编译代码和文档,发现如果不初始化,它将返回到使用PreviousProvider属性。这基本上是传递到其构造函数中的任何提供程序,不确定在Web.Config中定义为默认提供程序时该如何工作。无论哪种方式,SimpleMP都不会实现任何这些功能,如果它本身没有初始化,它只会返回到“先前”提供程序,并且没有返回,除了抛出NotSupportedException之外,没有其他选项。我想这是一个让我困惑的退路。@AndreasLarsen-如果你不初始化SimpleMembership,那么你就不能用它来使用WebSecurity。它将抛出一个异常。SimpleMembership不是在Web.Config中配置的,而是通过AccountController上的属性配置的。这将覆盖web.config中定义的成员资格,因此如果不初始化SimpleMembership,它将使用web.config中配置的任何内容。但是MVC4样板文件已经在web.config中定义了这一点,例如。我认为这只是决定在控制器的Membership.Provider属性中设置什么实例。您是说您可以使用WebSecurity而不必在web.config中定义任何默认提供程序,还是说需要初始化?@AndreasLarsen-否。默认MVC4在web.config中不包含任何成员资格部分。