Asp.net mvc 3 MVC自定义成员资格提供程序

Asp.net mvc 3 MVC自定义成员资格提供程序,asp.net-mvc-3,membership-provider,Asp.net Mvc 3,Membership Provider,我有一个自定义的成员资格提供程序,我已经指定在MVC3项目的web.config文件中使用它。我假设它将取代内置的成员资格提供程序,因为我这样指定它的用法: <system.web> <membership defaultProvider="CustomMySQLMembershipProvider"> <providers> <clear /> <add connectionStringName="dbCon

我有一个自定义的成员资格提供程序,我已经指定在MVC3项目的
web.config
文件中使用它。我假设它将取代内置的成员资格提供程序,因为我这样指定它的用法:

<system.web>
<membership defaultProvider="CustomMySQLMembershipProvider">
  <providers>
    <clear />
    <add
      connectionStringName="dbConn"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      requiresUniqueEmail="true"
      passwordFormat="Hashed"
      maxInvalidPasswordAttempts="25"
      minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0"
      passwordAttemptWindow="10"
      passwordStrengthRegularExpression=""
      applicationName="/jp2012"
      name="CustomMySQLMembershipProvider"
      type="NameSpace.CustomMySqlMembershipProvider" />
  </providers>
</membership>
</system.web>
有没有一种方法可以让它使用
web.config
文件自动覆盖,这样我就不必硬编码我的实现名称?更像这样:

CustomMySqlMembershipProvider membership = 
    (CustomMySqlMembershipProvider)Membership.Providers["CustomMySQLMembershipProvider"];
MembershipProvider membership = new MembershipProvider();

有什么想法吗?如果您需要更多信息,请告诉我。

您的会员资格提供商是您的默认提供商。除非提供程序中有其他功能,否则不需要显式强制转换提供程序


例如,当您调用
Membership.GetUser()
时,它将调用您的成员资格验证程序的
GetUser(…)
方法。

问题实际上是我如何声明我的成员资格。线路

type="NameSpace.CustomMySqlMembershipProvider"
未指定在其中定义自定义成员资格提供程序的程序集。我右键单击我的项目,选择属性,并从标记为
程序集名称的字段中获取程序集名称

因此,如果我的程序集名称是
AName
,那么此行应该是

type="NameSpace.CustomMySqlMembershipProvider, AName"

感谢@Eranga尝试帮助我。

我如何让它调用我的初始化方法?我在其中有初始化整个实现方法中使用的变量的代码。@JesseBuesking您必须重写
初始化(字符串名称,NameValueCollection配置)
才能进行初始化。我已经实现了
公共重写void Initialize(字符串名称,NameValueCollection配置)
,但是默认情况下,它目前没有被调用。有什么想法吗?@JesseBuesking它将只被调用一次(因为Asp.Net只保留MembershipProvider的一个实例),并且您可以通过Asp.Net API(例如
Membership.GetUser()
)访问您的提供程序,以便调用
Initialize
方法。