0

背景:

我正在使用 MS SQL server 2012 (Dreamspark FTW) 在 Visual Studio 2012 中设置数据库驱动的 Web 应用程序,或者至少我正在尝试。

数据库已使用 aspnet_config.exe 设置和注册。我有一个有效的连接字符串,我通过服务器资源管理器连接到数据库。我的研究告诉我,我开发的每个应用程序都应该有自己的数据库和连接字符串(是的,我知道这不是一成不变的)。如果我构建的每个应用程序都指向不同的数据库,那么 machine.config 中不需要有特定的连接字符串,对吗?但是,除非完整的连接字符串存储在 machine.config 中,否则我无法获得成员资格。

以下尝试均失败

  • machine.config 中的空白连接字符串,web.config 中的完整连接字符串
    • 两者同名
    • 每个都有不同的名字
  • machine.config 中没有连接字符串,web.config 中有完整的连接字符串
  • 注释掉对 machine.config 连接字符串的所有引用。

我注意到在system.web -> members -> providers标签下是一个名为 AspNetSqlMembershipProvider 的 add 元素和一个指向特定连接字符串名称的 connectionStringName 属性。如果在 machine.config 中找不到该特定命名的连接字符串,则该服务将无法工作。我曾尝试删除这些属性,但这也导致了错误。

问题:

如何让我的应用程序使用存储在 web.config 文件中的连接字符串?另外,我可以从 machine.config 中删除所有连接字符串吗?(如有必要/可能)

提前感谢您的见解

4

1 回答 1

0

您是否在 Web.config 中尝试过类似的操作?这会将 SQL 成员资格提供程序添加为默认提供程序。如果您的会员条目引用了特定的 defaultProvider,那也可能是您的问题。

<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="30">
    <providers>
        <clear />
        <add applicationName="myapp" 
             connectionStringName="MembershipConnectionString" 
             enablePasswordRetrieval="false" 
             enablePasswordReset="true" 
             maxInvalidPasswordAttempts="3" 
             minRequiredNonalphanumericCharacters="0" 
             minRequiredPasswordLength="6" 
             name="SqlMembershipProvider" 
             passwordAttemptWindow="60" 
             passwordFormat="Hashed"
             requiresQuestionAndAnswer="true" 
             requiresUniqueEmail="true" 
             type="System.Web.Security.SqlMembershipProvider" />
    </providers>
</membership>
于 2013-11-06T22:16:50.673 回答