ここで頭がおかしくなりました-ConfigurationManager.ConnectionStringsにAddメソッドがありますが、それを使用すると、「読み取り専用」エラーメッセージがスローされます。この問題に関する私の調査によると、実行時にプログラムで接続文字列を app.config に追加することはできません。これには、リフレクションを使用して ReadOnly フラグを false に設定する回避策があります。
リフレクションを使用した例を次に示します。
public static void AddConnectionString(SqlConnectionStringBuilder connectionString,string Name)
{
try
{
typeof(ConfigurationElementCollection).GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(ConfigurationManager.ConnectionStrings, false);
ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings(Name, connectionString.ConnectionString));
EventLogger.LogEvent("Added ConnectionString",1);
ProtectConnectionStrings();
}
catch (Exception ex)
{
EventLogger.LogError(ex.Message,(int)EventLogger.Events.GeneralException);
}
}
しかし、これは私には意味がありません。conStrs を app.config に保存して、暗号化できるようにします。ユーザーが実行時に app.config に追加できるようにする必要があります。これを達成する標準的な方法は何ですか?