2012-01-03 134 views
2

我有一个自定义会员供应商,我已经指定在我的web.config文件中使用MVC3项目。我认为它会代替内置的成员资格提供,因为我指定它的使用,像这样使用:MVC自定义会员供应商

<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> 

我必须做在我的代码的东西得到它覆盖默认的成员资格提供?现在,我可以这样访问:

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

有没有一种方法,我可以使用web.config文件,所以我没有硬编码实现我的名字让它被自动地重写?更类似于:

MembershipProvider membership = new MembershipProvider(); 

任何想法?如果您需要更多信息,请与我们联系。

回答

2

问题实际上是我如何宣布我的会员资格。该生产线

type="NameSpace.CustomMySqlMembershipProvider" 

没有指定我的自定义成员提供在定义装配。我右键点击我的项目,选择属性,并得到了现场组装名标Assembly name

所以,如果我的程序集的名称为AName,那么这行应该已经

type="NameSpace.CustomMySqlMembershipProvider, AName" 

谢谢@Eranga企图帮助我。

2

您的会员提供商是您的案例中的默认提供商。除非在提供商中具有其他功能,否则不需要明确地转换提供者。

例如,当您致电Membership.GetUser()时,它会调用您的会员证明方的GetUser(...)方法。

+0

我怎样才能调用我的Initialize方法?我有那里的代码初始化贯穿实施方法的变量。 – JesseBuesking 2012-01-03 16:27:58

+0

@JesseBuesking你必须重写'Initialize(string name,NameValueCollection config)'来完成初始化。 – Eranga 2012-01-03 23:57:25

+0

我已经实现了'public override void Initialize(string name,NameValueCollection config)',但是它目前没有被默认调用。有任何想法吗? – JesseBuesking 2012-01-04 01:32:44