【问题标题】:ASP.NET web.config Could not find the specified membership providerASP.NET web.config 找不到指定的成员资格提供程序
【发布时间】:2010-02-22 04:49:13
【问题描述】:

我收到了这个错误信息

找不到指定的会员提供者

这是我的 web.config 设置:

<connectionStrings>
<add name="MyConnectionString" connectionString="Data Source=MyHostName;Initial Catalog=MyDB;User ID=userid;Password=*****" providerName="System.Data.SqlClient" />
    <add name="ADConnectionString" connectionString="LDAP://demo.stl.local/DC=stl,DC=local"/>
</connectionStrings>
    <system.web>

    <customErrors defaultRedirect="~/error.aspx"/>

    <siteMap defaultProvider="default">
        <providers>
            <clear/>
            <add name="default" type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap" securityTrimmingEnabled="true"/>
        </providers>
    </siteMap>

    <roleManager enabled="true" defaultProvider="SqlRoleManager">
        <providers>
            <add connectionStringName="MyConnectionString" applicationName="MyAppDemo" name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider"/>
                        </providers>

        <membership defaultProvider="MyADMembershipProvider">
            <providers>
                <add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName"/>
            </providers>
        </membership>

我正在尝试将 ASP.NET 成员资格与 ActiveDirectory 身份验证一起使用。在我添加另一个连接字符串和角色管理器之前,使用 AD 的身份验证工作正常。那么,这个设置有什么问题呢?

谢谢。

【问题讨论】:

    标签: asp.net active-directory web-config authorization custom-membershipprovider


    【解决方案1】:

    角色管理器未关闭

    <roleManager enabled="true" defaultProvider="SqlRoleManager">
            <providers>
                <add connectionStringName="MyConnectionString" applicationName="MyAppDemo" name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider"/>
                            </providers>
    
            <membership defaultProvider="MyADMembershipProvider">
    //here 
    </roleManager>
    

    【讨论】:

      【解决方案2】:

      好吧,Membership 节点与providers 处于同一级别,也许您应该在&lt;membership&gt; 之前用&lt;/providers&gt; 关闭。

      另外,membership 应该与 roleManager 分开。

      <roleManager enabled="true" defaultProvider="SqlRoleManager">
          <providers>
              <add connectionStringName="MyConnectionString" applicationName="MyAppDemo" name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider"/>
          </providers>
      </roleManager>
      
      <membership defaultProvider="MyADMembershipProvider">
          <providers>
              <add name="MyADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName"/>
          </providers>
      </membership>
      

      【讨论】:

      • 抱歉,我刚刚在 问题中添加了我的错字。它在 web.config 中
      • 好的,我验证了,成员资格不应该在 roleManager 中,它们都是独立的节点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      相关资源
      最近更新 更多