5

В веб-приложение ASP.NET я определил следующие поставщика членства в web.config:requiresQuestionAndAnswer значение ЛОЖЬ в web.config, но RequiresQuestionAndAnswer верно во время выполнения

<membership> 
    <providers> 
    <add connectionStringName="MyServer" name="MyServer" type="System.Web.Security.SqlMembershipProvider" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     enablePasswordRetrieval="false" /> 
    </providers> 
</membership> 

При запуске приложения в отладчик, свойство Membership.Provider.RequiresQuestionAndAnswer - true.

Почему? И как я могу это исправить?

Обновление: Ar tuntime, коллекция Membership.Providers содержит два экземпляра провайдера, которые практически идентичны. Отличия:

  • Первый провайдер имеет имя == «AspNetSqlMembershipProvider» и RequiresQuestionAndAnswer == истинный
  • Второй провайдер имеет имя == «Мой сервер» и RequiresQuestionAndAnswer == ложные.

Теперь пытаясь выяснить, откуда идет первый.

+2

Указывает ли имя поставщика в отладчике имя вашего провайдера («MyServer»)? –

+0

@MeidanAlon имя поставщика в отладчике кажется «AspNetSqlMembershipProvider». В то же время, он показывает правильную строку соединения SQL, поэтому она выглядит так, как будто она правильная. – urig

+0

Это странно, я бы попробовал добавить defaultProvider = «MyServer» внутри членства и в

ответ

3

За следование вопроса, провайдеры тайна определяется на более низком уровне конфигурационного файла, имени машины .config, который представляет собой серверный файл конфигурации сервера для всех сайтов asp.net, работающих на машине. См. Более подробную информацию на MSDN page for asp.net config hierarchy.

0

Исправление для моей проблемы заключается в определении в web.config:

<membership defaultProvider="MyServer> 

Причина, почему есть «лишняя» Provider во время выполнения является то, что он определен в моем machine.config файла. Here's how to find yours.

Кредит для исправления идет к @ Мейдан-Алон и кредит на первопричину идет к @ кен-egozi :)