我对此感到困惑 - 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 中。完成此任务的标准方法是什么?