Использует ли IIS7 другой поставщик членства по умолчанию? - PullRequest
2 голосов
/ 29 июня 2009


Скажем, я создаю CreateUserWizard , управляю и использую AspNetSqlMembershipProvider (определено в machine.config ) в качестве поставщика членства по умолчанию. Если предположить, что я поменяю атрибут по умолчанию для провайдера requireQuestionAndAnswer на false , тогда CreateUserWizard шаблон управления не требуется для предоставления Вопрос и Ответ полей. Но если я запрашиваю страницу через IIS7 , я получаю следующее исключение:

CreateUserWizard1: CreateUserWizardStep.ContentTemplate не содержит IEditableTextControl с идентификатором Вопрос для секретного вопроса, это необходимо, если ваш членский член требует вопрос и ответ.

A) Вышеуказанное исключение предполагает, что при запросе страницы через IIS7 среда выполнения не использует AspNetSqlMembershipProvider (определено в machine.config ) как провайдер по умолчанию ?! Если это правда, то почему?

B) А где я могу найти определение для поставщика IIS7 по умолчанию?


1043 * спасибо *


EDIT:

Вот элемент <Membership> в файле machine.config:

    <membership>
     <providers>
        <add name="AspNetSqlMembershipProvider" 
         type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
         connectionStringName="LocalSqlServer" 
         enablePassswordRetrieval="false" 
         requiresQuestionAndAnswer="false" 
         applicationName="/" requiresUniqueEmail="false" 
         passwordFormat="Hashed" maxInvalidPasswordAttempts="5" 
         minRequiredPasswordLength="7" 
         minRequiredNonalphanumericCharacters="0" 
         passwordAttemptWindow="10" 
         passwordStrengthRegularExpression=""/>
    </providers>
   </membership>


Вы меняете machine.config на правильную версию среды выполнения?

Я не уверен, что вы подразумеваете под этим. Я использую Asp.Net 3.5, который, как мне кажется, использует движок Asp.Net версии 2.0.50727. Таким образом, я управлял машиной.config, расположенным внутри C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

Ответы [ 3 ]

2 голосов
/ 29 июня 2009

IIS7 использует свой собственный файл конфигурации, расположенный по адресу %windir%\System32\inetsrv\config\applicationHost.config. Однако этот файл имеет дело с конкретной конфигурацией IIS7 (например, <system.webServer>), а не с <system.web>. Я считаю, что они все еще читаются из файлов machine.config и web.config. Действительно, значение по умолчанию (указанное в machine.config) для requiresQuestionAndAnswer для AspNetSqlMembershipProvider на моем компьютере равно true.

UPDATE:

В 64-битной ОС приложение .NET может запускаться на 32-битном CLR в режиме WOW64 или работать в режиме x64. Каждый экземпляр платформы .NET имеет свой собственный набор файлов конфигурации и игнорирует все остальные файлы конфигурации.

IIS7 в 64-битной ОС по умолчанию запускает приложения в 64-битном режиме. Однако вы можете настроить запуск пула приложений как 32-битного процесса WOW64 (enable32BitAppOnWin64, который можно установить в диалоговом окне «Дополнительные параметры» для пула приложений в диспетчере IIS7). Если вы сделаете это, очевидно, он будет использовать настройки из 32-битного machine.config. Причина, по которой веб-сервер VS использует 32-битный machine.config, заключается именно в этом: он работает как процесс WOW64.

1 голос
/ 24 апреля 2012

Вы добавили requiresQuestionAndAnswer="false" в <membership> провайдере, вы также должны изменить его в <profile>, просто добавьте элемент <profile> и установите requiresQuestionAndAnswer="false" в его провайдере

1 голос
/ 29 июня 2009

Где именно вы внесли изменения в "requireQuestionAndAnswer"? Если он находится на machine.config, IIS должен соблюдать это.

...