如何仅使用Web.config连接到数据库

时间:2013-11-06 21:21:45

标签: .net visual-studio-2012 sql-server-2012 connection-string

背景

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

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

以下尝试均失败

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

我注意到在 system.web - >下会员资格 - > providers 标记是一个名为AspNetSqlMembershipProvider的add元素,以及一个指向特定连接字符串名称的connectionStringName属性。如果在machine.config中找不到具体命名的连接字符串,则该服务将不起作用。我尝试删除这些属性,但也导致了错误。

问题:

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

提前感谢您的见解

1 个答案:

答案 0 :(得分: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>