假设我创建 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答案 0 :(得分:2)
IIS7使用位于%windir%\System32\inetsrv\config\applicationHost.config
的自己的配置文件。但是,此文件处理IIS7特定配置(例如<system.webServer>
)而非<system.web>
内容。我相信这些文件仍会从machine.config
和web.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"
其提供者