ConfigurationManager.ConnectionStrings
静的なプロパティで、実行時にで提供される任意の構成ファイルから一連の接続文字列にアクセスしようとしています。アプリケーションコードは接続文字列がこのコレクションに入ることを期待しており、デフォルトの構成ファイルを編集せずに新しい値を提供する必要があります。私は例えば、私はSystem.Configuration.ExeConfigurationFileMap
を使用して、任意の構成ファイルから接続文字列をロードするためにSystem.Configuration.ConfigurationManager.OpenMappedExeConfiguration
を使用できると判断した`System.Configuration.ConfigurationManager.ConnectionStrings`をデフォルト以外の設定ファイル値で更新できますか?
:
using System.Configuration;
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap{ExeConfigFilename = 'some.config'}, ConfigurationUserLevel.None);
config.RefreshSection(config.ConnectionStrings.SectionInformation.SectionName);
この文脈では、私は、接続文字列にアクセスできることを期待したいです静的ConfigurationManager.ConnectionStrings
プロパティからsome.config
からロードされましたが、これはアプリケーション設定のデフォルトで使用可能だったものだけを保持するようです。
静的ConfigurationManager.ConnectionStrings
プロパティの値を更新するために、デフォルト設定にマスクまたはコピーすることはできますか?あるいは、デフォルトコンフィギュレーションを新しいコンフィギュレーションファイルに定義し直して、実行時にと定義し、最終的に望ましい結果につなげる方法はありますか?
この直後 - 'ConfigurationManager.OpenMappedExeConfiguration' - ' config'の 'HasFile'プロパティをチェックします。場合によってはファイルをロードしていないにもかかわらず例外をスローしないような悪質なことを行うこともあります。あなたのファイルに何が含まれていない 'Configuration'オブジェクトを与えます。 –
いいえ、 'HasFile'プロパティは' true'で、 'FilePath'は接続文字列を持つデフォルト以外の設定ファイルです。 – jmlane
アプリケーションの設計を変更して、接続、接続マネージャーや構成サービスなどのための特別なサービスを使用することはできません。 – NSGaga