C#读写参数到APP.Config

news2024/7/6 17:50:19

C#读写参数到APP.Config

  • 介绍
  • 程序Demo
  • 常见错误

介绍

系统在开发时,可能需要设置默认参数,比如数据库的链接参数,某个参数的默认数据等等。对于这些数据,可直接在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 后,则正常。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/617410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echo命令在Unix中的作用以及其常见用法

在Unix系统中,"echo"是一个常用的命令,用于在终端或脚本中输出文本。它可以将指定的字符串或变量的值打印到标准输出,从而向用户提供信息或进行调试。 本文将详细介绍"echo"命令在Unix中的作用以及其常见用法。 基本语法…

Keras-3-实例1-二分类问题

1. 二分类问题 1.1 IMDB 数据集加载 IMDB 包含5w条严重两极分化的评论,数据集被分为 2.5w 训练数据 和 2.5w 测试数据,训练集和测试集中的正面和负面评论占比都是50% from keras.datasets import imdb(train_data, train_labels), (test_data, test_l…

UE5 Chaos破碎系统学习1

在UE5中,Chaos破碎系统被直接进行了整合,本篇文章就来讲讲chaos的基础使用。 1.基础破碎 1.首先选中需要进行破碎的模型,例如这里选择一个Box,然后切换至Fracture Mode(破碎模式): 2.点击右侧…

JAVA实现打字练习软件

转眼已经学了一学期的java了,老师让我们根据所学知识点写一个打字练习软件的综合练习。一开始我也不是很有思路,我找了一下发现csdn上关于这个小项目的代码也不算很多,所以我最后自己在csdn查了一些资料,写了这么一个简略版本的打…

【C++】——list的介绍及模拟实现

文章目录 1. 前言2. list的介绍3. list的常用接口3.1 list的构造函数3.2 iterator的使用3.3 list的空间管理3.4 list的结点访问3.5 list的增删查改 4. list迭代器失效的问题5. list模拟实现6. list与vector的对比7. 结尾 1. 前言 我们之前已经学习了string和vector&#xff0c…

Remix IDE已支持Sui Move在线开发

网页版Remix IDE与WELLDONE Code插件结合,让您无需本地设置或安装即可开始构建Sui应用程序。 不熟悉Sui的构建者可能想在正式配置开发环境之前,浅尝一下构建Sui应用程序。Remix IDE与WELLDONE Code插件组合,即可帮助构建者实现从浏览器窗口开…

JavaScript函数的增强知识

函数属性和arguments以及剩余参数 函数属性name与length ◼ 我们知道JavaScript中函数也是一个对象,那么对象中就可以有属性和方法。 ◼ 属性name:一个函数的名词我们可以通过name来访问; // 自定义属性foo.message "Hello Foo"…

Nginx 之 Tomcat 负载均衡、动静分离

一.详细安装及操作实例(Nginx 七层代理) 首先至少准备三台服务器 Nginx 服务器:192.168.247.131:80 Tomcat服务器1:192.168.247.133:80 Tomcat服务器2:192.168.247.134:8080 192.168.247.134:80811.部署Nginx 负载均…

微信自动回复怎么设置呢?

友友们 你们是否有以下这些烦恼 1、每天要手动点击“添加”按钮多次以通过大量好友? 2、你是否经常需要在多个微信帐号之间来回切换? 3、你的回复速度慢,导致客户流失率高? 4、为了及时回复,你总是需要带着多部手机出门&…

二十一、C++11(中)

文章目录 一、左值&右值(一)基本概念1.左值是什么2.右值是什么 (二)左值引用和右值引用1.左值引用2.右值引用 二、右值引用使用场景和意义(一)引入(二)左值引用的使用场景&#…

Linux编译器(gcc/g++)调试器gdb项目自动化构建工具(make/Makefile)版本管理git

Linux编译器-gcc/g&&调试器gdb&&项目自动化构建工具-make/Makefile&&版本管理git 🔆gcc/g的使用可执行文件的"生产"过程gcc如何完成预处理编译汇编链接 函数库函数库一般分为静态库和动态库两种静态C/C库的安装 gcc选项gcc选项记…

WPF 学习:如何照着MaterialDesign的Demo学习

文章目录 往期回顾对应视频资源如何照着wpf项目学习找到你想要抄的页面查找对应源码演示示例如何认清页面元素抄袭实战 项目地址总结 往期回顾 WPF Debug运行是 实时可视化树无效,无法查看代码 WPF MaterialDesign 初学项目实战(0):github …

【Java】线程池的概念及使用、ThreadPoolExecutor的构造方法

什么是线程池为什么用线程池JDK提供的线程池工厂模式如何使用 自定义线程池ThreadPoolExecutor类的构造方法工作原理拒绝策略 线程池的使用 什么是线程池 在之前JDBC编程中,通过DataSource获取Connection的时候就已经用到了池的概念。这里的池指的是数据库连接池。…

Vue电商项目--uuid游客身份获取购物车数据

uuid游客身份获取购物车数据 获取购物车列表 请求地址 /api/cart/cartList 请求方式 GET 参数类型 参数名称 类型 是否必选 描述 无 无 无 无 返回示例 成功: { "code": 200, "message": "成功", "…

马尔萨斯 ( Malthus)人口指数增长模型Logistic 模型

3.要求与任务 从 1790 — 1990 年间美国每隔 10 年的人口记录如下表所示: 用以上数据检验马尔萨斯 ( Malthus)人口指数增长模型,根据检验结果进一步讨论马尔萨斯 人口模型的改进,并利用至少两种模型来预测美国2010 年的人口数量。 提示 1 &…

自学黑客(网络安全),一般人我还是劝你算了吧

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一…

数据结构与算法练习(三)二叉树

文章目录 1、树2、二叉树3、满二叉树4、完全二叉树5、二叉树的遍历(前序、中序、后序)二叉树删除节点或树 6、顺序存储二叉树顺序存储二叉树遍历(前序、中序、后序) 7、线索化二叉树中序线索二叉树前序线索二叉树后序线索二叉树 1…

Matlab 之 Curve Fitting APP 使用笔记

文章目录 Part.I IntroductionPart.II 使用笔记Chap.I 拟合函数Chap.II 注意事项 Part.I Introduction 曲线或曲面拟合获取拟合参数。本篇博文主要记录一下 Matlab 拟合 APP Curve Fitting 的使用方法。 Part.II 使用笔记 这个APP用来做拟合的,包括二维数据的线拟…

常见的样本统计量及其数字特征

常见的样本统计量及其数字特征 下图来自《统计学图鉴》 样本统计量有什么作用? 因为总体特征包含有总体均值、总体方差等特征,我们在用样本推断总体时,其实就是用样本特征去估计总体特征,例如:样本均值这个统计量的期…

案例33:基于Springboot名城小区物业管理系统开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…