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

时间:2015-05-26 15:34:27

标签: c# asp.net web-config asp.net-membership sqlmembershipprovider

在ASP.net Web应用程序中,我在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实例。不同之处是:

  • 第一个提供商名称==“AspNetSqlMembershipProvider”和RequiresQuestionAndAnswer == true
  • 第二个提供商具有Name ==“MyServer”和RequiresQuestionAndAnswer == false。

现在试图找出第一个来自哪里。

2 个答案:

答案 0 :(得分:3)

根据后续问题,神秘提供程序在较低级别的配置文件中定义,名为machine.config,它是服务器上运行的所有asp.net站点的服务器范围的父配置文件。请参阅MSDN page for asp.net config hierarchy上的更多详细信息。

答案 1 :(得分:0)

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

<membership defaultProvider="MyServer>

在运行时有“额外”提供程序的原因是它在我的 machine.config 文件中定义。 Here's how to find yours

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