2

这是一个我以前从未见过的问题,似乎甚至找不到不涉及蛮力硬编码的解决方法,更不用说解决方案了。尝试在 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% 确定我有。就在你认为你确定的时候,再次检查是值得的……

4

3 回答 3

0

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

您也可以尝试调试它。

于 2013-04-15T03:38:17.940 回答
0

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

于 2013-04-15T02:25:07.643 回答
0

我还没有测试过它可能会产生什么影响,但是您的提供程序应该是System.Data.SqlClient针对 MSSQL Server 的。我以前没有见过MSSQL提供商名称。

于 2013-04-14T21:50:56.513 回答