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

发布于 2024-07-25 05:39:50 字数 1794 浏览 4 评论 0原文


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

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

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

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


thanx


编辑:

这是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。 因此,我操作了位于 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 内的 machine.config

Say I create CreateUserWizard control and use AspNetSqlMembershipProvider (defined in machine.config) as a default membership provider. Assuming I change default provider's requiresQuestionAndAnswer attribute to false, then CreateUserWizard control template should not be required to provide Question and Answer fields. But if I request the page via IIS7 I get the following exception:

CreateUserWizard1: CreateUserWizardStep.ContentTemplate does not contain an IEditableTextControl with ID Question for the security question, this is required if your membership provider requires a question and answer.

A) The above exception suggests that when requesting a page via IIS7, runtime doesn’t use AspNetSqlMembershipProvider (defined in machine.config)as a default provider?! If true, then why is that?

B) And where can I find the definition for IIS7’s default provider?

thanx

EDIT:

Here is <Membership> element in machine.config file:

    <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>

Are you changing the machine.config for the correct version of runtime?

I'm not sure what you mean by that. I'm running Asp.Net 3.5, which I think uses Asp.Net engine version 2.0.50727. Thus I manipulated machine.config located inside C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

别低头,皇冠会掉 2024-08-01 05:39:50

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

更新

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

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

IIS7 uses its own configuration file located at %windir%\System32\inetsrv\config\applicationHost.config. However, this file deals with IIS7 specific configuration (e.g. <system.webServer>) and not <system.web> stuff. I believe those are still read from machine.config and web.config files. Indeed, the default value (specified in machine.config) for requiresQuestionAndAnswer for the AspNetSqlMembershipProvider is true on my machine.

UPDATE:

Under a 64 bit OS, a .NET application can either run on a 32 bit CLR in WOW64 mode or natively run under x64 mode. Each .NET framework instance has its own set of config files and ignores all other configuration files.

IIS7 on a 64 bit OS runs applications in 64 bit mode by default. You can, however, set an application pool to run as a 32 bit WOW64 process (enable32BitAppOnWin64, which you can set in Advanced Settings dialog for an application pool in IIS7 manager). If you do that, obviously it'll use settings from 32 bit machine.config. The reason VS Web server uses 32 bit machine.config is exactly this: it runs as a WOW64 process.

梦与时光遇 2024-08-01 05:39:50

您到底在哪里对“requiresQuestionAndAnswer”进行了更改? 如果它位于 machine.config 上,IIS 应该尊重这一点。

Where exactly did you make the change on "requiresQuestionAndAnswer"? If it is on machine.config, IIS should honor that.

没有伤那来痛 2024-08-01 05:39:50

您在 提供程序中添加了 requiresQuestionAndAnswer="false",您还应该在 提供程序中更改它,只需添加 元素并在其提供程序上设置 requiresQuestionAndAnswer="false"

You added requiresQuestionAndAnswer="false" in the <membership> provider, you should also change it in the <profile> one, just add the <profile> element and set requiresQuestionAndAnswer="false" on its provider

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文