c# - ConfigurationManager.ConnectionStrings.Add

标签 c# .net app-config

我的思绪在这里感到困惑 - 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 中。实现此目的的标准方法是什么?

最佳答案

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

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

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

关于c# - ConfigurationManager.ConnectionStrings.Add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601855/

相关文章:

c# - 如何让不同的解决方案引用一个 resx 文件?

deployment - 在安装项目中将 App.Config 设置为自定义操作

c# - 是否可以让多个服务或应用程序共享一个配置文件

c# - 为修改所述集合的集合的每个元素调用方法的安全方法?

C# 异步持久 WebClient 示例

c# - 读取 System.Diagnostics.Debug 窗口

.net - Google Place API - 如何检索营业时间

c# - XmlCodeExporter 和可为 null 的类型

c# - Windows Phone 7 事件调用?

.net - 转换为 Visual Studio 2010/.Net 4.0 后的 app.config "Could not find schema information"