requiresQuestionAndAnswer 在 web.config 中设置为 false,但 RequiresQuestionAndAnswer 在运行时为 true

requiresQuestionAndAnswer set to false in web.config but RequiresQuestionAndAnswer is true at runtime

在 ASP.net 网络应用程序中,我在 web.config 中定义了以下成员资格提供程序:

<membership>
  <providers>
    <add connectionStringName="MyServer" name="MyServer" type="System.Web.Security.SqlMembershipProvider" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="false" 
      enablePasswordRetrieval="false" />
  </providers>
</membership>

当我运行调试器中的应用程序时,属性Membership.Provider.RequiresQuestionAndAnswertrue

为什么?我该如何解决这个问题?

更新:Ar tuntime,Membership.Providers 集合包含两个几乎相同的 Provider 实例。差异是:

现在想弄清楚第一个来自哪里。

解决我的问题的方法是在 web.config 中指定:

<membership defaultProvider="MyServer>

在 运行 时有一个 "extra" 提供程序的原因是它在我的 machine.config 文件中定义。 Here's how to find yours.

修复归功于@meidan-alon,根本原因归功于@ken-egozi :)

根据后续问题,神秘提供程序在名为 machine.config 的较低级别配置文件中定义,这是所有 asp.net 站点 [=15] 的服务器级父配置文件=] 在机器上。在 MSDN page for asp.net config hierarchy.

查看更多详细信息