6

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

我运行了 aspnet_regsql 并能够在远程服务器上创建成员数据库,但是当我转到 ASPNET 配置(cassini 开发服务器)时,它不会连接到远程服务器。

4

4 回答 4

18

经过大量搜索,我发现 machine.config (c:\windows\Microsoft.NET\Framework\v2.0.50727\CONFIG) 中指定的默认 Membership Provider 始终指向在 localhost 上运行的 SQL Server。

除了修改 machine.config 之外,还有一种方法可以在项目 web.config 中进行设置:

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

    <connectionStrings>
      <add name="aspnet_membership" connectionString="<your_connection_string>"/>
    </connectionStrings>

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>

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

于 2008-12-06T00:07:23.013 回答
2
<membership>
       <providers>
           <clear/>
           <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>

我需要添加此行以使我的 Roles 和 Profile 员工基于 Membership 类工作:

   <profile>
       <providers>
           <clear/>
           <add name="AspNetSqlProfileProvider"
           connectionStringName="aspnet_membership"
           applicationName="/"
           type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
       </providers>
   </profile>

   <roleManager enabled="true">
       <providers>
           <clear/>
           <add name="AspNetSqlRoleProvider"
           connectionStringName="aspnet_membership"
           applicationName="/"
           type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
           <add name="AspNetWindowsTokenRoleProvider"
           applicationName="/"
           type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
       </providers>
   </roleManager>   
于 2013-02-04T00:53:40.260 回答
1

第2步:复制这个:

<remove name="LocalSqlServer"/>

<add name="LocalSqlServer" connectionString="Data Source=VMK\sqlexpress;Initial Catalog=commodity_exchange;Integrated Security=True" providerName="System.Data.SqlClient"/>

于 2011-05-12T14:15:02.033 回答
0

这是解决方案:

第 1 步:启动 Visual Studio 命令提示符 类型:aspnet_regsql 指定您的服务器:if sqlexpress then server = hostname\sqlexpress * ** * ** * *** *使用 Windows 身份验证

第 2 步:将其复制到 web config。不要指定用户名或密码,因为您使用 Windows 身份验证进行连接,这就是我们集成安全性 =true 的原因。

第 3 步:将 Web 管理工具上的安全性>身份验证类型更改为“来自 Internet”。

现在享受。

于 2011-05-12T14:11:48.820 回答