2012-02-06 2 views
1

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

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

Мой заказ Membership Provider Класс

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

     } 
    } 
} 

Web конфигурации:

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

Спасибо, Бен

+0

Не могли бы вы сделать класс частичного 'общественный частичный класс MyMembershipProvider' –

+0

конечно другой экземпляр, что у вас возникли проблемы с должны были бы быть частичными тоже - где когда-либо, что является –

ответ

0

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

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

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

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

+0

Большое спасибо за это, было Второй вариант. Выбрал его, указав сборку в web.config, поэтому type = "ExtendRegv1.MyMembershipProvider, ExtendRegv1" –

+0

@BenSheehan - рад помочь - можете ли вы пометить как правильный ответ - зеленый галочку. Я получаю жужжание и награду за дополнительную репутацию, и вы получаете нахальный +2 в сделку –

Смежные вопросы