Ошибка поставщика настраиваемого членства в ASP.NET Web Forms - PullRequest
1 голос
/ 06 февраля 2012

В моем приложении ASP.NET Web Forms я пытаюсь создать свой собственный класс SQLMembershipProvider для переопределения ConnectionString во время выполнения. Но я получаю ошибку конфигурации: «Тип 'ExtendRegv1.MyMembershipProvider' является неоднозначным"

Я создал следующий класс в папке App_code ...

Мой класс провайдера пользовательского членства

namespace ExtendRegv1
{
    public class MyMembershipProvider :SqlMembershipProvider
    {
        public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
        {
            base.Initialize(name, config);

            string connectionString = "Data Source=BSHEEHAN-PC\\SQLEXPRESS;Initial Catalog=ExReg_Default;Integrated Security=True";

            FieldInfo connectionStringField = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
        connectionStringField.SetValue(this, connectionString);  

        }
    }
}

Веб-конфигурация:

<membership>
    <providers>
        <clear />
              <add name="MyMembershipProvider" type="ExtendRegv1.MyMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
    </providers>
</membership>

Спасибо, Бен

1 Ответ

0 голосов
/ 06 февраля 2012

Я только что попробовал это в тестовом проекте, и он прекрасно работает для меня. Итак пару мыслей

  1. Когда я поместил класс в App_Code, мне пришлось щелкнуть правой кнопкой мыши файл и в свойствах изменить действие сборки с Content на Compile - это было в VS 2010. Это вряд ли ваша проблема.

  2. Скорее всего - у вас есть две копии MyMembershipProvider - т.е. это также в dll, который включен в сборку. Это может быть даже демо-код другого пользователя. Я бы закомментировал ваш класс app_code и посмотрел, будет ли он создан. Это не исправит это - просто даст вам хорошее представление о том, что не так. Я все равно хотел бы поставить класс в dll - но это только я (ИМХО и все такое)

Как я уже сказал - на классическом языке разработчика - у меня работает над сборкой (это почти как девиз!)

...