これは私がこれまでに見たことのない問題であり、ブルートハードコーディングを伴わない回避策、ましてや解決策を見つけることすらできないようです。WCF Service App で 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 ファイルを取り出しました。確信があると思ったら、もう一度確認する価値があります...