MVC Пользовательское членство провайдер - PullRequest
2 голосов
/ 03 января 2012

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

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

2 голосов
/ 08 января 2012

Проблема была в том, как я объявил свое членство.В строке

type="NameSpace.CustomMySqlMembershipProvider"

не указана сборка, в которой был определен мой пользовательский поставщик членства. Я щелкнул правой кнопкой мыши по своему проекту, выбрал свойства и получил имя сборки из поля, помеченного Assembly name. * 1005.*

Так что, если мое имя сборки было AName, то эта строка должна была быть

type="NameSpace.CustomMySqlMembershipProvider, AName"

Спасибо @Eranga за попытку помочь мне.

2 голосов
/ 03 января 2012

Ваш провайдер членства является провайдером по умолчанию в вашем случае.Вам не нужно явно приводить провайдера, если у вас нет дополнительных функций в вашем провайдере.

Например, когда вы звоните Membership.GetUser(), он вызовет метод GetUser(...) вашего участника проверки *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...