当我开始一个新项目时,发现需要使用成员提供程序,但我无法连接到包含成员数据库的远程数据库。
我运行了aspnet_regsql,并成功在远程服务器上创建了成员数据库,但当我去ASPNET配置(Cassini开发服务器)时,它无法连接到远程服务器。
当我开始一个新项目时,发现需要使用成员提供程序,但我无法连接到包含成员数据库的远程数据库。
我运行了aspnet_regsql,并成功在远程服务器上创建了成员数据库,但当我去ASPNET配置(Cassini开发服务器)时,它无法连接到远程服务器。
经过多次搜索,我发现在machine.config(c:windowsMicrosoft.NETFrameworkv2.0.50727CONFIG)中指定的默认成员身份提供程序总是指向在本地主机上运行的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 中提取。
<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>
步骤二:复制此内容:
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=VMKsqlexpress;Initial Catalog=commodity_exchange;Integrated Security=True" providerName="System.Data.SqlClient"/>
这是解决方案:
step 1: Launch Visual Studio command prompt Type: aspnet_regsql Specify your server: if sqlexpress then server = hostnamesqlexpress ***********Use Windows Authentication
步骤2:将此复制到web config中。不要指定用户名或密码,因为您正在使用Windows身份验证进行连接,这就是为什么我们需要集成安全性 = true。
步骤3:在Web管理工具上更改安全性>身份验证类型为“来自互联网”。
现在享受。