2010-11-24 4 views
5

私のapp.configから接続文字列を読み込もうとしていますが、接続文字列が1つしか表示されず、それも私のapp.configにはありません。ここで あなたのapp.configのconnectionStrings要素を読みます

は私のコードです:

System.Diagnostics.Debugger.Break(); 

Configuration config = 
ConfigurationManager.OpenExeConfiguration(
        AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

foreach (var connectionString in config.ConnectionStrings.ConnectionStrings) 
    System.Diagnostics.Debug.Print(connectionString.ToString()); 

そしてそれは、プリントアウトし、この:

data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true 

私は私が指定した私のデータベースのいずれかにカスタムたconnectionStringをプリントアウトすることを期待していますapp.configファイル。

更新

こんにちはみんなは、私の問題に時間を過ごし、手助けしようとしているためにあなたのすべてに感謝します。私は単にConfigurationManager.ConnectionStringsを使用したり、このように他のサブセクションにアクセスすることができるという点で皆さんが納得していますが、私がそれを行うと、構成は読み取り専用です。新しい接続文字列を追加する、既存の接続文字列を削除するなど、変更を加えることはできません。そして私はそれをする必要があります。実行時に設定ファイルを変更する方法がある場合はお知らせください。

答えて

0

(接続文字列以外の)任意の構成設定を読み取ることはできますか?

試してみてください。

System.Configuration.ConfigurationManager.AppSettings("MyAppVariable"); 

はまた、その構文は少し複雑に見えます。この簡単なバージョンを試してみてください:

System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString 
2

あなたのmachine.configから読み込みます。 app.configをで<connectionStrings>後 は<clear/>.

+0

私はそれを試みました。しかし、運はありません。 –

2

を挿入し、あなたの設定ファイルを開くにはOpenExeConfigurationを使用している理由はありますか?プロジェクトの一部として作成したapp.configの場合は、ConfigurationManager.ConnectionStringsを使用するだけです。

2

ConfigurationManager.ConnectionStrings["ConnectionStringName"] appSettingとして保存されていない限り、それを行う必要があります。私は(大規模Webアプリケーションソリューションに含まれる)私が書いた小さなコンソールアプリケーションとまったく同じ問題を抱えていた。この場合

、それはConfigurationManager.AppSettings["SettingName"]

0

にあるであろう - 私のapp.configはもはやなかったように思われました私は戻ってきた唯一の接続文字列はLocalSqlServerでした。

リブートで修正されました。

1

ConnectionStrings(またはapp.configの任意のセクション)を編集する場合は、ConfigurationオブジェクトのGetSection()メソッドによって返されたオブジェクトを使用する必要があります。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
ConnectionStringsSection csSettings = config.GetSection("connectionStrings") as ConnectionStringsSection; 
if(csSettings != null) 
{ 
    // examples of removing all settings, adding a new one and removing it 
    csSettings.ConnectionStrings.Clear(); 
    csSettings.ConnectionStrings.Add(new ConnectionStringSettings("myCS", "<connectionString>")); 
    csSettings.ConnectionStrings.Remove("myCS"); 
    // save the changes 
    config.Save(ConfigurationSaveMode.Modified); 
} 

私の経験上、OpenExeConfiguration(文字列)にはバグがあり、常にapp.configが開きます。ファイル名から設定ファイルを開くには、OpenMappedExeConfiguration()を使う必要があります。

関連する問題