2012-01-03 1 views
2

У меня есть пользовательский членский провайдер, который я указал для использования в моем файле web.config для проекта MVC3. Я предполагал, что он будет использоваться вместо встроенного в поставщика членства, так как я, указав его использование, как так:MVC Custom Member Provider

<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(), он назовет метод вашего участника proxy GetUser(...).

+0

Как я могу заставить его вызвать метод Initialize? У меня есть код, который инициализирует переменные, используемые во всех реализованных методах. – JesseBuesking

+0

@JesseBuesking Вы должны переопределить инициализацию 'Initialize (string name, NameValueCollection config)' для инициализации. – Eranga

+0

Я реализовал 'public override void Initialize (string name, NameValueCollection config)' уже, но он по-прежнему не вызывается по умолчанию. Есть идеи? – JesseBuesking