需要考虑的几件事,首先,Membership 和 Role 提供程序是静态的,并且通常仅在第一次在应用程序中访问它们时才被初始化。在 Web.Config 中正确设置后,它们将在首次访问时调用初始化。
通过使用一组基本的 Provider 和默认的 ASP.NET MVC 2 应用程序进行一些测试,我发现 RoleProvider 通常在应用程序启动时立即初始化。不过需要注意的一件事是,如果您想重新初始化提供程序,您必须停止您的开发 Web 服务器(或 iis express,或清除应用程序池)。这样应用程序就会重新启动。如果你不这样做,并且提供程序已经被初始化,它永远不会遇到那些断点,因为它已经运行了。
此外,在获取您的成员资格提供程序的实例时,不要通过创建类的新实例来实现(即 var provider = new MyMembershipProvider()),因为这不会调用初始化方法。请务必通过 Membership.Provider 获取您的提供程序,它将为您正确配置的 web.config 提供程序处理所有设置。
仔细查看 AccountModels 文件(~第 101 行)中的默认 MVC 2 应用程序提供了一个很好的示例。
_provider = provider ?? Membership.Provider;
第一次访问它时,它将实例化默认的成员资格提供程序并调用初始化。之后,它对应用程序保持静态,并且在应用程序从内存中卸载之前不会再次调用。IE。停止 vs web 开发服务器。
此外,还可以在以下位置找到获取特定成员资格提供程序的另一种类似方法:如何在自定义 MembershipProvider 上调用 Initialize?
希望这可以帮助 :)