【问题标题】:connection string in web config being ignoredWeb 配置中的连接字符串被忽略
【发布时间】:2013-04-06 22:25:39
【问题描述】:

这是一个我以前从未见过的问题,似乎甚至找不到不涉及硬编码的解决方法,更不用说解决方案了。尝试在 WCF 服务应用程序中连接到 SQL Server Express 2012 数据库时,我对 ConfigurationManager 的调用未显示添加到 Web.config 的连接字符串。这是连接字符串...

<connectionStrings>
  <add name="SRC.RMX.DB" connectionString="Data Source=COMPUTER-NAME\SQLEXPRESS;Initial Catalog=src.db;Integrated Security=True" providerName="MSSQL"/>
</connectionStrings>

这是我在无数真实和测试应用程序中添加的完全相同的连接字符串格式,并且与正在构建的服务非常相似的服务具有完全相同的连接(它们应该在同一个系统中并排工作)使用不同的名称,并且可以正常工作。令人惊讶的是,如果将测试控制台应用程序添加到项目中,并在其 app.config 中使用此连接字符串,则它可以毫无问题地运行。

但是尝试运行 Web 服务的单元测试,但它在 web.config 中找不到它。调试时,它甚至没有列在连接字符串选项中。如果配置文件有问题,我会理解,但我几乎只是在项目中使用 VS2012 创建的那个,并且只添加了如下所示的连接字符串...

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <connectionStrings>
    <add name="SRC.RMX.DB" connectionString="Data Source=COMPUTER-NAME\SQLEXPRESS;Initial Catalog=src.db;Integrated Security=True" providerName="MSSQL"/>
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

任何想法可能是罪魁祸首?我可以在这里做些什么来让这个连接字符串最终出现吗?我可能会错过什么?

已解决:

哎呀。不好意思承认,但我下载了一个没有用于我的单元测试的连接字符串的 .config 文件版本,并且 100% 确定我有。就在你认为你确定的时候,再次检查是值得的......

【问题讨论】:

    标签: c# wcf web-config connection-string


    【解决方案1】:

    如果它是为单元测试完成的,你也应该将 connString 添加到单元测试项目配置中。

    你也可以尝试调试一下。

    【讨论】:

      【解决方案2】:

      尝试重新创建配置文件并将您的自定义属性复制/粘贴到其中。可能只是某个地方不合适的字符或分隔符。如果它有效,你可以 winmerge 看看它是什么。

      【讨论】:

        【解决方案3】:

        我还没有测试过它可能有什么影响,但是你的提供者应该是 System.Data.SqlClient 用于 MSSQL Server。我以前没见过MSSQL 提供者名称。

        【讨论】:

        • 它没有任何作用。我将MSSQL 用于数据库访问包装器,并且如原始问题中所述,具有不同名称的相同连接字符串适用于以相同方式布置的不同项目,并且控制台应用程序使用完全相同的连接字符串它的 app.config 文件。您甚至不必为有效连接提供提供者名称。
        猜你喜欢
        • 1970-01-01
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多