这是一个我以前从未见过的问题,似乎甚至找不到一种不涉及粗暴硬编码的解决方法,更不用说解决方案了。尝试连接到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%确定我做了。就在你认为自己确定的时候再次检查是值得的......
答案 0 :(得分:0)
我还没有测试它可能会产生什么影响,但是对于MSSQL Server,您的提供程序应该是System.Data.SqlClient
。我之前没有看到MSSQL
提供商名称。
答案 1 :(得分:0)
尝试重新创建配置文件并将自定义属性复制/粘贴到其中。可能只是某个地方的角色或分隔符。如果它有效,你可以winmerge并看看它是什么。
答案 2 :(得分:0)
如果是为单元测试完成的,你也应该将connString添加到单元测试项目配置中。
您也可以尝试调试它。