这是一个我以前从未见过的问题,似乎甚至找不到一个不涉及强力编码的解决方案,更不用说解决方案了。当尝试连接到WCF Service App中的SQL Server Express 2012数据库时,我对ConfigurationManager
的调用不会显示添加到Web.config的连接字符串。以下是连接字符串。。。
<connectionStrings>
<add name="SRC.RMX.DB" connectionString="Data Source=COMPUTER-NAMESQLEXPRESS;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-NAMESQLEXPRESS;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%确定我有。就在你认为你确信的时候,再次检查是值得的。。。
我还没有测试它可能产生的效果,但您的提供者应该是MSSQL Server的System.Data.SqlClient
。我以前从未见过MSSQL
提供商的名称。
尝试重新创建配置文件,并将您的自定义属性复制/粘贴到其中。可能只是某个位置的字符或分隔符。如果它有效,你可以winmerge,看看它是什么。
如果是为单元测试完成的,那么也应该将connString添加到单元测试项目配置中。
您也可以尝试调试它。