2008-10-24 3 views
9

При переопределении элемента MembershipProvider и его вызове, есть ли способ заполнить конфигурационный параметр NameValueCollection метода Initialize без ручного просмотра конфигурационного файла для настроек?Custom MembershipProvider Метод инициализации

Очевидно, что этот Инициализатор вызывается asp.net и конфигурация заполняется где-то. Я внедрил свой собственный MemberhipProvider, и он отлично работает через сборку элементов управления. Я хотел бы создать новый экземпляр моего провайдера и сделать его напрямую, но я действительно не хочу разбирать .config для MemberhipProvider, это имя строки подключения, а затем строка соединения, если она уже выполняется где-то.

ответ

20

tvanfosson- Спасибо за помощь. (если бы у меня было 15 очков, я бы проголосовал за вас)

С вашей ссылки я смог понять это. Оказывается, второй параметр к proceedure Initialize был список параметров от поставщика и может быть достигнуто следующим образом:

string configPath = "~/web.config"; 
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath); 
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership"); 
ProviderSettingsCollection settings = section.Providers; 
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters; 
Initialize(section.DefaultProvider, membershipParams); 
+4

у вас теперь есть эти 15 необходимых очков :) – Abel 2010-08-24 18:07:55

7

Не знаете, почему вы хотите создать новый, но если вы создадите его самостоятельно, вам нужно будет прочитать веб-конфигурацию и получить значения самостоятельно для перехода к Initialize(), поскольку это выполняется вне класса. Я уверен, однако, что уже есть раздел обработчик для этого раздела, так что должно быть просто вопрос делает:

MembershipSection section = WebConfigurationManager.GetSection("membership"); 

Затем найти у поставщика и доступ к его свойствам для построения NameValueCollection. Я не думаю, что вам придется написать какой-либо код для анализа раздела конфигурации.

Вот MembershipSection документация на MSDN. Отверните оттуда.

+1

Я пробовал это и раздел был нулевым. Я посмотрел на WebConfigurationManager, и все, что у меня есть, это AppSettings и ConnectionStrings. Есть ли причина, по которой членство не появляется? Я вижу это в web.config? – JHORN 2008-10-24 17:09:25

0

В любом случае вы не должны создавать экземпляр MembershipProvider. Он создает и инициализирует стандартную инфраструктуру asp.net. Вы можете получить к нему доступ по коду, подобному этому:

var customerMembership = Membership.Provider;

+0

Это сработало для меня! и это единственный способ убедиться, что запущена ваша функция переопределяемого инициализации. – JeffJeffery 2016-03-07 20:27:17

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