ConfigurationManager.ConnectionStrings.Add

本文关键字:Add ConnectionStrings ConfigurationManager | 更新日期: 2023-09-27 18:22:11

我在这里感到困惑-ConfigurationManager.ConnectionStrings上有一个Add方法但是,如果我使用它,它会抛出一条"只读"错误消息。我对这个问题的研究表明,我们不能在运行时通过程序将连接字符串添加到app.config中

下面是反射的例子:

 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中。实现这一目标的标准方法是什么?

ConfigurationManager.ConnectionStrings.Add

应用程序不应该编辑app.config文件。判断这种情况的一种方法是考虑它的位置——在文件夹中的可执行文件旁边,该文件(默认情况下)不可由用户或用户的应用程序(程序文件)写入。

我想说,如果它是用户正在修改的东西,它应该存储在设置中。

或者,你可以创建自定义配置文件,并使用相同的System.Configuration来访问它。但它有点笨拙,我不确定你会从常规设置文件中得到什么。