2017-12-01 14 views
0

でapp.configを交換することは、私のAppConfigです。それは何の誤りもなく走った。しかし、connectionStringをappconfigファイルに保存しませんでした。私はUnauthorizedAccessを言うエラーが出るここでは、実行時

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
connectionStringsSection.ConnectionStrings["Blah"].ConnectionString = "Data Source=blah;Initial Catalog=blah;UID=blah;password=blah"; 
config.Save(); 
ConfigurationManager.RefreshSection("connectionStrings"); 

:私もこのアイデアを試してみました。 (私はそれが私の学校のネットワークのためだと信じています)

これらの2つのオプションはこれまで働いていません。私もConfigurationManager.ConnectionStrings["cn"]を自分のカスタムconnectionStringに設定しようとしました。読んでいるだけなので、それも失敗しました。実行時にconnectionStringを置き換えることができるという考えは他にありますか?

ありがとうございます。

+0

管理者として実行。 –

+0

app.manifestを追加して属性を変更しました。それはどちらもうまくいかなかった。 – JackTheRipper

+2

app.configではなく、ファイル名が間違っています。これはfoobarプログラムのfoobar.exe.configに似ています。ファイルのパスをすでに知っていて、xmlをロードしたことに注意してください。したがって、保存するときはまったく同じパスを使用してください。 –

答えて

0

アプリケーション設定ファイルを変更するには、アプリケーションが起動する前に実行する必要があります。特定のキーは、アプリケーションがブートストラップされているときだけランタイムによって読み込まれ、他のものは読み取り専用になります。

AppSettingsセクションの構成エントリを動的に変更するには、System.Configurationアセンブリを参照する必要があります。他のすべてのキーは、設計上の読み取り専用です。

アプリケーションを起動する前に設定を変更したくない場合は、関係するすべてのエンティティについて考える必要があります。誰があなたの接続文字列を読みますか?それがあなたならば、単に別の場所に保存することも、AppSettingsキーに保存することもできます。代わりに、外部コンポーネントが設定ファイルからそれを読み取る必要がある場合、アプリケーションを実行する前に変更を行うラッパーを持つために、アプリケーションのアーキテクチャを変更することはありません。

アセンブリ(これは重要です)を再確認した後、この方法でキーを変更することができます。

のApp.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="key1" value="configuration"/> 
    </appSettings> 
</configuration> 

Program.csの

using System; 
using System.Configuration; 

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      System.Configuration.ConfigurationManager.AppSettings["key1"] = "changed"; 

      var value = System.Configuration.ConfigurationManager.AppSettings["key1"]; 

      Console.WriteLine($"This is the new key: {value}."); 
     } 
    } 
} 
関連する問題