设置默认的AspNetSqlProvider以指向远程数据库

jdi*_*iaz 6 sql-server asp.net asp.net-membership

当启动一个需要使用成员资格提供程序的新项目时,我发现无法连接到包含成员资格数据库的远程数据库.

我运行aspnet_regsql并能够在远程服务器上创建成员资格数据库,但是当我转到ASPNET配置(cassini开发服务器)时,它将无法连接到远程服务器.

jdi*_*iaz 18

经过多次搜索后,我发现machine.config(c:\ windows\Microsoft.NET\Framework\v2.0.50727\CONFIG)中指定的默认成员资格提供程序始终指向在localhost上运行的SQL Server.

而不是修改machine.config有一种方法在项目web.config中设置它:

1)将连接字符串设置为远程数据库

    <connectionStrings>
      <add name="aspnet_membership" connectionString="<your_connection_string>"/>
    </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

2)<system.web>重新定义默认提供者:

  <membership>
    <providers>
        <remove name="AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider" 
            type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
            connectionStringName="aspnet_membership"
            enablePasswordRetrieval="false" 
            enablePasswordReset="true" 
            requiresQuestionAndAnswer="true" 
            applicationName="/" 
            requiresUniqueEmail="false" 
            passwordFormat="Hashed" 
            maxInvalidPasswordAttempts="5" 
            minRequiredPasswordLength="7" 
            minRequiredNonalphanumericCharacters="1" 
            passwordAttemptWindow="10" 
            passwordStrengthRegularExpression=""/>
    </providers>
  </membership>
Run Code Online (Sandbox Code Playgroud)

<remove name="AspNetSqlMembershipProvider"/>是关键!所有其他键/值都直接从machine.config获取