当启动一个需要使用成员资格提供程序的新项目时,我发现无法连接到包含成员资格数据库的远程数据库。
我运行aspnet_regsql并且能够在远程服务器上创建成员资格数据库,但是当我转到ASPNET配置(cassini开发服务器)时,它将无法连接到远程服务器。
答案 0 :(得分: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>
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
答案 1 :(得分: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>
我需要添加这些行,以便根据成员资格类工作来获取我的角色和个人资料工作人员:
<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>
答案 2 :(得分:1)
第2步:复制:
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=VMK\sqlexpress;Initial Catalog=commodity_exchange;Integrated Security=True" providerName="System.Data.SqlClient"/>
答案 3 :(得分:0)
以下是解决方案:
步骤1:启动Visual Studio命令提示符 键入:aspnet_regsql 指定您的服务器:如果是sqlexpress,那么server = hostname \ sqlexpress * ** * ** * *** *使用Windows身份验证
第2步:将其复制到web配置。不要指定用户名或密码,因为你连接了windows身份验证,这就是我们集成security = true的原因。
步骤3:将网络管理工具上的安全性&gt;身份验证类型更改为“从Internet”。
现在享受。