English 中文(简体)
设置默认的AspNetSqlProvider指向远程数据库
原标题:
  • 时间:2008-12-05 23:59:58
  •  标签:

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

我运行了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管理工具上更改安全性>身份验证类型为“来自互联网”。

现在享受。





相关问题
热门标签