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