会员提供商 - 仅连接到默认提供商?

时间:2011-07-22 02:29:53

标签: .net asp.net-mvc asp.net-mvc-3

在我的Web配置中,我定义了2个成员资格提供程序,一个用于sql,一个用于活动目录。我的思维过程是在发布版本中,我将AD设置为默认值,但在调试时我使用sql。这是因为我的开发计算机无法访问域以对用户进行身份验证。

然而,在我看来,我的网站试图连接到两个来源,而不仅仅是默认提供商。因此,虽然我定义了一个活动目录提供程序,但由于无法连接,我无法进行开发,即使sql被定义为默认值。

有没有办法只连接到默认提供商?

我目前损坏的网络配置是这样的:

<membership defaultProvider="AspNetSqlMembershipProvider">
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServer" />
    <add name="ActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ActiveDirectoryServer" attributeMapUsername="sAMAccountName"/>

  </providers>
</membership>

3 个答案:

答案 0 :(得分:2)

在您的web.release.config文件中,您只需将整个成员资格部分替换为AD信息,并在web.config中将其保留为或仅具有SQL提供程序。

对于web.release.config:

<system.web>
  <membership defaultProvider="ActiveDirectoryMembershipProvider" xdt:Transform="Replace">
    <providers>
      <clear/>
      <add name="ActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ActiveDirectoryServer" attributeMapUsername="sAMAccountName"/>
    </providers>
  </membership>
</system.web>

答案 1 :(得分:1)

您使用的是VS2010吗?

如何使用web.config transformations

Scott Guthrie的博客中还有interesting article

答案 2 :(得分:0)

web.config添加默认提供商内:

    <connectionStrings>
        <add name="ApplicationServices" 
             connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" />
      </connectionStrings>

web.Release.config内添加转化:

<connectionStrings>
    <add name="ApplicationServices" 
         connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"  
         xdt:Transform="Replace" xdt:Locator="Match(name)"/>
  </connectionStrings>

注意:

更改构建配置不会触发仅在您发布网站时才有效的转换。

要测试它,您不必在生产服务器上执行此操作,您可以发布到文件系统。