IIS7使用不同的默认成员资格提供程序吗

时间:2009-06-28 23:17:19

标签: c# asp.net iis iis-7 asp.net-membership


假设我创建 CreateUserWizard 控件并使用 AspNetSqlMembershipProvider (在 machine.config 中定义)作为默认成员资格提供程序。假设我将默认提供程序的 requiresQuestionAndAnswer 属性更改为 false ,则不应要求 CreateUserWizard 控制模板提供问题回答字段。但是如果我通过 IIS7 请求页面,我会得到以下异常:

  

CreateUserWizard1:CreateUserWizardStep.ContentTemplate不包含带有ID问题的IEditableTextControl用于安全问题,如果您的会员提供者需要问题和答案,则需要这样做。

A)上述异常表明,当通过 IIS7 请求页面时,运行时不使用 AspNetSqlMembershipProvider (在 machine.config中定义 )作为默认提供商?!如果是真的,那为什么呢?

B)我在哪里可以找到 IIS7的默认提供商的定义?


感谢名单


编辑:

这是machine.config文件中的<Membership>元素:

    <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。因此,我操纵位于 C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

内的machine.config

3 个答案:

答案 0 :(得分:2)

IIS7使用位于%windir%\System32\inetsrv\config\applicationHost.config的自己的配置文件。但是,此文件处理IIS7特定配置(例如<system.webServer>)而非<system.web>内容。我相信这些文件仍会从machine.configweb.config文件中读取。实际上,machine.config requiresQuestionAndAnswer的默认值(在AspNetSqlMembershipProvider中指定)在我的计算机上为true

<强>更新

在64位操作系统下,.NET应用程序既可以在WOW64模式下运行32位CLR,也可以在x64模式下本机运行。每个.NET框架实例都有自己的一组配置文件,并忽略所有其他配置文件。

64位操作系统上的IIS7默认情况下以64位模式运行应用程序。但是,您可以将应用程序池设置为以32位WOW64进程(enable32BitAppOnWin64)运行,您可以在IIS7管理器中的应用程序池的“高级设置”对话框中进行设置。如果你这样做,显然它会使用32位machine.config的设置。 VS Web服务器使用32位machine.config的原因正是如此:它作为WOW64进程运行。

答案 1 :(得分:1)

你究竟在哪里对“requiresQuestionAndAnswer”进行了更改?如果它在machine.config上,IIS应该尊重它。

答案 2 :(得分:1)

您在requiresQuestionAndAnswer="false"提供商中添加了<membership>,您还应该在<profile>提供商中进行更改,只需添加<profile>元素并设置requiresQuestionAndAnswer="false"其提供者