Использует ли IIS7 другой поставщик членства по умолчанию?

2


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

CreateUserWizard1: CreateUserWizardStep.ContentTemplate не содержит IEditableTextControl с идентификационным вопросом для вопроса безопасности, это требуется, если ваш поставщик членства требует ответа на вопрос.

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

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


спасибо


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. Таким образом, я манипулировал machine.config, находящимся внутри C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

Теги:
iis
iis-7
asp.net-membership

3 ответа

2
Лучший ответ

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 Framework имеет свой собственный набор файлов конфигурации и игнорирует все другие файлы конфигурации.

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

  • 0
    Любая идея, почему на моем компьютере провайдер по умолчанию (определенный внутри machine.config) игнорируется?
  • 1
    SourceC: Не могли бы вы опубликовать тег <members> в вашем machine.config? Вы меняете machine.config для правильной версии среды выполнения?
Показать ещё 7 комментариев
1

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

1

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

  • 0
    Я сделал изменения в machine.config

Ещё вопросы

Сообщество Overcoder
Наверх
Меню