C#读写参数到APP.Config

2023-11-01

C#读写参数到APP.Config

介绍

系统在开发时,可能需要设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在app.config中读取。

在读写时,需要先了解configurationmanager类。

命名空间:System.Configuration 程序集: System.Configuration.dll

此类的作用为提供对客户端应用程序配置文件的访问。 此类不能被继承。

属性 描述
AppSettings 获取当前应用程序默认配置的AppSettingSection数据
ConnectionStrings 获取当前应用程序默认配置的AppSettingSection数据
方法 描述
GetSection 检索当前应用程序默认配置的指定配置节
OpenExeConfiguration 检索当前应用程序默认配置的指定配置节
OpenMachineConfiguration 将当前计算机的配置文件作为 Configuration 对象打开。
OpenMappedExeConfiguration 将当前计算机的配置文件作为 Configuration 对象打开。
OpenMappedMachineConfiguration 将计算机配置文件作为 Configuration对象打开,该对象使用指定的文件映射。
RefreshSection 刷新命名节,这样在下次检索它时将从磁盘重新读取它。

程序Demo

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace demo132_APP.config的读写
{
    class Program
    {
        static void Main(string[] args)
        {

            ReadAllSetting();
            ReadSetting("a");
            ReadSql();
 
            Console.ReadKey();
            //使用connectionStrings,常用于设置数据库链接参数

        }
        static void ReadAllSetting()
        {
            //读取App.config中Appsettingsection数据
            try
            {
                var appsettings = ConfigurationManager.AppSettings;
                if(appsettings.Count==0)
                {
                    Console.WriteLine("AppSetting is empty");
                }
                else
                {
                    foreach(var key in appsettings.AllKeys)
                    {
                        Console.WriteLine("Key:{0},Value:{1}", key, appsettings[key]);
                    }
                }
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error Reading Appsettings");
            }
        }
        static void ReadSetting(string key)
        {
            //根据key值,读取appsettings中的值
            try
            {
                var appsetting = ConfigurationManager.AppSettings;
                string result = appsetting[key] ?? "Not Found";//??代表当appsetting为null时,result为Not Found,否则为appsetting[key]
                Console.WriteLine(result);
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading Appsetting");
            }


        }
        static void AddUpdateSettings(string key,string value)
        {
            try
            {
                var configfile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings = configfile.AppSettings.Settings;
                if(settings[key]==null)
                {
                    settings.Add(key, value);
                }
                else
                {
                    settings[key].Value = value;
                }
                configfile.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(configfile.AppSettings.SectionInformation.Name);
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading in Appsettings");
            }
        }
        static void ReadSql()
        {
            try
            {
                var sqlcon = ConfigurationManager.ConnectionStrings["Sqlcon"].ConnectionString;
                if(sqlcon != null)
                {
                    Console.WriteLine(sqlcon.ToString());
                }
                else
                {
                    Console.WriteLine("Nothing");
                }
            }
            catch(ConfigurationErrorsException)
            {
                Console.WriteLine("Error in connectionstring");
            }
            
            
        }
    }
}

常见错误

使用App.config配置参数,读取参数出现错误

“System.Configuration.ConfigurationErrorsException”类型的未经处理的异常在 System.Configuration.dll 中发生。其他信息: 配置系统未能初始化

解决办法:如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。",将appSettings放到configSections 后,则正常。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#读写参数到APP.Config 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • vue-quill-editor富文本编辑器的使用(实现图片/文件上传)

    目录 实现效果 编辑器配置 基本配置 实现图片上传 实现文件上传 实现效果 文本编辑的三个功能分别是 添加链接 上传图片 上传文件 编辑器配置 基本配置
  • 关于webview点击输入框无法弹出软键盘问题

    转载请注明出处 http blog csdn net ym4189 article details 78017484 webview加载一个网页版聊天时 由于输入框还要加载表情 没有使用 lt input gt 标签 使用的 lt pre
  • windows中怎么添加定时任务

    linux中有crontab定时任务 很方便 其实windows也有类似的 需求 定时执行python脚本 1 Windows键 R 调出此窗口 输入compmgmt msc 2 转载于 https www cnblogs com gcgc
  • Spring 基础知识

    Spring Framework Spring框架是一个开放源代码的J2EE应用程序框架 由Rod Johnson发起 是针对bean的生命周期进行管理的轻量级容器 lightweight container Spring解决了开发者在J2
  • Ant Design Pro基础框架搭建

    介绍 Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端 设计解决方案 致力于在设计规范和基础组件 在学习Ant Design Pro之前 要求我们有一定的umi和Ant Design基础
  • Uart-WiFi模块ESP8266把玩记

    Uart WiFi模块ESP8266把玩记 由于只是一个模块 并不是完整的开发板 所以需要自己连接外围电路 试用的过程中遇到了很多麻烦 这里统统记录 1 确认硬件版本 由于ESP8266版本一直在更新 所以需要自己确认一下PCB版本 特征
  • Nacos介绍与安装启动

    什么是 Nacos 概览 欢迎来到 Nacos 的世界 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 帮助您快速实现动态服务发现 服务配置 服务元数据及流量管理 Nacos 帮助您更敏捷和容易地构建
  • roadmap & go语言

    技术类的Roadmap 路线图 具有许多好处 下面是其中几个主要的好处 明确目标 Roadmap可以帮助技术团队明确目标和愿景 它提供了一个清晰的计划 使团队成员知道他们正在朝着什么方向前进 并且可以更好地集中精力和资源 规划优先级 Roa
  • 情态动词的用法

    文章目录 1 can could 2 may might 3 must have to 4 should ought to 5 need 5 1 情态动词 5 2 实意动词 5 3 don t have to 6 had better 7
  • [私有云平台的搭建——vCenter 及其安装与配置】

    目录 1 vCenter 部署结构 2 vCenter 功能 3 vCenter 高级功能 4 环境说明 5 选择要安装的程序 6 同意许可协议 7 选择部署类型 嵌入式部署 8 设置系统名称 9 建议使用 FQDN 10 设置 SSO 域
  • java.lang.NoSuchMethodException异常处理方法

    java lang NoSuchMethodException意思是没有找到该方法 第一种情况 根据提示查看方法是否存在 第二种 是访问的方法是受保护的 我们用getDeclaredMethod 来获取方法 getDeclaredMetho
  • Java如何避免死锁

    目录 一 死锁的定义 二 死锁的原因 1 造成死锁的原因 2 避免死锁 一 死锁的定义 死锁的定义 死锁是指两个或者两个以上的进程在执行的过程中 由于竞争资源而造成的一种阻塞现象 如果没有外力作用 它们都将无法推进下去 此时称系统处于死锁状
  • 学习Linux的第四天

    vim vi 文本编辑器 重点 1 vim lt 名字 gt 2 命令模式 d enter 删除光标所在行以及下一行 dd 删除光标所在行 4dd 从光标所在行开始一共删除4行 dG 删除光标所在行 以及到文档尾 dgg 删除光标所在行 以
  • 【杂七杂八】CUDA一个小错误:segmention fault

    找了半天 原来是忘了cudaFree
  • AXI Narrow Transfer、Unaligned Transfer

    本文为转载内容 原文链接 深入 AXI4 总线 三 传输事务结构 知乎 读写数据结构 在 AXI 数据传输过程中 主要涉及到窄位宽数据传输 Narrow Transfer 非对齐传输 Unaligned Transfer 以及混合大小端传输
  • 7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位

    随着IT行业的发展 产品愈渐复杂 web端业务及流程更加繁琐 目前UI测试仅是针对单一页面 操作量大 为了满足多页面功能及流程的需求及节省工时 设计了这款UI 自动化测试程序 旨在提供接口 集成到蜗牛自动化测试框架 方便用例的设计 目前 在
  • error : [QtRunWork] Error starting process C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\uic.exe: 系统找不到指定的文件

    工程环境Qt5 14 2 VS2019 项目工程从A电脑拷贝到B电脑出现 Error starting process C Qt Qt5 14 2 5 14 2 msvc2017 64 bin uic exe 系统找不到指定的文件 问题分析
  • struts2与spring整合

    struts2与spring整合 struts2与spring整合目的 是为了让struts2的action由容器管理 1 在web xml中配置spring的监听器 直接拷贝过来就行 不需要会 2 加一个jar包 struts2 spri
  • 快手首次透露商业化布局:将重点发力短视频广告

    雷帝网 雷建平 10月24日报道 快手的商业化进程一直颇受关注 据官方最新表态显示 快手商业化进入新阶段 今日 在快手以广告为主题的媒体沟通活动上 快手公司创始人兼CEO宿华专门发来一段话 经过一年多摸索 快手商业化提速 即将推出快手营销平
  • C#读写参数到APP.Config

    C 读写参数到APP Config 介绍 程序Demo 常见错误 介绍 系统在开发时 可能需要设置默认参数 比如数据库的链接参数 某个参数的默认数据等等 对于这些数据 可直接在app config中读取 在读写时 需要先了解configur