基于.net 的加载自定义配置-误操作
有时候 需要 将程序加载自定义的配置文件,除了自己写解析xml文件。内置的ConfigutionManager对象 是个不错的选项。
按照 app.config 的方式,做一个副本。然后从你的配置文件中,加载指定的配置 键值对!
//方法1-可以读取任意位置的xml文件
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = QuartzConfigPath; //filePath;
var config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
// 方法2 -只能读取当前应用程序域中 根目录下的文件:注意exe的含义
//var config = ConfigurationManager.OpenExeConfiguration(QuartzConfigPath);
[csharp] view plain copy
public class ConfigureAppConfig
{
//静态构造,不能实例化
static ConfigureAppConfig() { } /**//// <summary>
/// 获取AppSettings配置节中的Key值
/// </summary>
/// <param name="keyName">Key's name</param>
/// <returns>Key's value</returns>
public static string GetAppSettingsKeyValue(string keyName)
{
return ConfigurationManager.AppSettings.Get(keyName);
} /**//// <summary>
/// 获取ConnectionStrings配置节中的值
/// </summary>
/// <returns></returns>
public static string GetConnectionStringsElementValue()
{
ConnectionStringSettings settings =System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"];
return settings.ConnectionString;
} /**//// <summary>
/// 保存节点中ConnectionStrings的子节点配置项的值
/// </summary>
/// <param name="elementValue"></param>
public static void ConnectionStringsSave(string ConnectionStringsName, string elementValue)
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = elementValue;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");
} /**//// <summary>
/// 判断appSettings中是否有此项
/// </summary>
private static bool AppSettingsKeyExists(string strKey, Configuration config)
{
foreach (string str in config.AppSettings.Settings.AllKeys)
{
if (str == strKey)
{
return true;
}
}
return false;
} /**//// <summary>
/// 保存appSettings中某key的value值
/// </summary>
/// <param name="strKey">key's name</param>
/// <param name="newValue">value</param>
public static void AppSettingsSave(string strKey, string newValue)
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (AppSettingsKeyExists(strKey, config))
{
config.AppSettings.Settings[strKey].Value = newValue;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
} // 如果你的程序是对其它程序的配置文件进行操作,代码如下:
[csharp] view plain copy
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = filePath;//配置文件路径
config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
if (AppSettingsKeyExists("Refresh", config))
{
config.AppSettings.Settings["Refresh"].Value = M_TimeRead.ToString();
} if (AppSettingsKeyExists("MachineNo", config))
{
config.AppSettings.Settings["MachineNo"].Value = M_MachineNo; }
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = M_ConnectionString;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");
数据库字符串加密
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = Application.ExecutablePath + ".Config"; //filePath;
config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
//指定我所要的节点
ConfigurationSection section = config.ConnectionStrings;
if ((section.SectionInformation.IsProtected == false) && (section.ElementInformation.IsLocked == false))
{
//制定节点加密
section.SectionInformation.ProtectSection(protect);
//即使没有修改也保存设置
section.SectionInformation.ForceSave = true;
//配置文件内容保存到xml
config.Save(ConfigurationSaveMode.Full);
}
- public class ConfigureAppConfig
- {
- //静态构造,不能实例化
- static ConfigureAppConfig() { } /**//// <summary>
- /// 获取AppSettings配置节中的Key值
- /// </summary>
- /// <param name="keyName">Key's name</param>
- /// <returns>Key's value</returns>
- public static string GetAppSettingsKeyValue(string keyName)
- {
- return ConfigurationManager.AppSettings.Get(keyName);
- } /**//// <summary>
- /// 获取ConnectionStrings配置节中的值
- /// </summary>
- /// <returns></returns>
- public static string GetConnectionStringsElementValue()
- {
- ConnectionStringSettings settings =System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"];
- return settings.ConnectionString;
- } /**//// <summary>
- /// 保存节点中ConnectionStrings的子节点配置项的值
- /// </summary>
- /// <param name="elementValue"></param>
- public static void ConnectionStringsSave(string ConnectionStringsName, string elementValue)
- {
- System.Configuration.Configuration config =
- ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = elementValue;
- config.Save(ConfigurationSaveMode.Modified);
- ConfigurationManager.RefreshSection("connectionStrings");
- } /**//// <summary>
- /// 判断appSettings中是否有此项
- /// </summary>
- private static bool AppSettingsKeyExists(string strKey, Configuration config)
- {
- foreach (string str in config.AppSettings.Settings.AllKeys)
- {
- if (str == strKey)
- {
- return true;
- }
- }
- return false;
- } /**//// <summary>
- /// 保存appSettings中某key的value值
- /// </summary>
- /// <param name="strKey">key's name</param>
- /// <param name="newValue">value</param>
- public static void AppSettingsSave(string strKey, string newValue)
- {
- System.Configuration.Configuration config =
- ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
- if (AppSettingsKeyExists(strKey, config))
- {
- config.AppSettings.Settings[strKey].Value = newValue;
- config.Save(ConfigurationSaveMode.Modified);
- ConfigurationManager.RefreshSection("appSettings");
- }
- }
- }
// 如果你的程序是对其它程序的配置文件进行操作,代码如下:
- ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
- filemap.ExeConfigFilename = filePath;//配置文件路径
- config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
- if (AppSettingsKeyExists("Refresh", config))
- {
- config.AppSettings.Settings["Refresh"].Value = M_TimeRead.ToString();
- } if (AppSettingsKeyExists("MachineNo", config))
- {
- config.AppSettings.Settings["MachineNo"].Value = M_MachineNo; }
- config.Save(ConfigurationSaveMode.Modified);
- ConfigurationManager.RefreshSection("appSettings");
- config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = M_ConnectionString;
- config.Save(ConfigurationSaveMode.Modified);
- ConfigurationManager.RefreshSection("connectionStrings");
- 数据库字符串加密
- ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
- filemap.ExeConfigFilename = Application.ExecutablePath + ".Config"; //filePath;
- config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
- //指定我所要的节点
- ConfigurationSection section = config.ConnectionStrings;
- if ((section.SectionInformation.IsProtected == false) && (section.ElementInformation.IsLocked == false))
- {
- //制定节点加密
- section.SectionInformation.ProtectSection(protect);
- //即使没有修改也保存设置
- section.SectionInformation.ForceSave = true;
- //配置文件内容保存到xml
- config.Save(ConfigurationSaveMode.Full);
- }
基于.net 的加载自定义配置-误操作的更多相关文章
- spring boot加载自定义配置
1.通过@Value 配置文件中 wechat: ssh: host: 192.0.1.1 port: 22 加载类 @Component @Data public class SftpConfig ...
- [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]
Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...
- asp.net core重新加载应用配置
asp.net core重新加载应用配置 Intro 我把配置放在了数据库或者是Redis里,配置需要修改的时候我要直接修改数据库,然后调用一个接口去重新加载应用配置,于是就尝试写一个运行时重新加载配 ...
- 写个重新加载 ocelot 配置的接口
写个重新加载 ocelot 配置的接口 Intro 我们想把 ocelot 的配置放在自己的存储中,放在 Redis 或者数据库中,当修改了 Ocelot 的配置之后希望即时生效,又不想在网关这边定时 ...
- SpringBoot系列——加载自定义配置文件
前言 SpringBoot启动时默认加载bootstrap.properties或bootstrap.yml(这两个优先级最高).application.properties或application. ...
- atitit.动态加载数据库配置in orm hibernate mybatis
atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...
- 自动化测试-14.selenium加载FireFox配置
前言 有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile ...
- 2.14 加载Firefox配置
2.14 加载Firefox配置(略,已在2.1.8讲过,请查阅2.1.8节课) 回到顶部 2.14-1 加载Chrome配置 一.加载Chrome配置chrome加载配置方法,只需改下面一个地方,u ...
- PIE SDK加载自定义服务数据
1.功能简介 自定义服务数据,将符合要求的矢量数据和栅格数据集等数据以服务的方式发布,将数据存储在某服务器中,在有网络的情况下可以根据URL就可以访问,比较常见的服务数据类型的有ArcGIS Serv ...
随机推荐
- Spring Boot1.5X升级到2.0指南
原文:https://www.jianshu.com/p/3494c84b4be3 前言 Spring Boot已经发布2.0有4个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把本博客中Sp ...
- Tomcat与Gzip与缓存
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- H264 RTP封包原理(转载)
1. 引言 随着信息产业的发展,人们对信息资源的要求已经逐渐由文字和图片过渡到音频和视频,并越来越强调获取资源的实时性和互动性.但人们又面临着另外一种不可避免的尴尬,就是在网络上看到生 ...
- 莫比乌斯函数&莫比乌斯反演
莫比乌斯函数:http://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html Orz PoPoQQQ
- 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息
在JavaScript文件中存储敏感数据,不仅是一种错误的实践方式,而且还是一种非常危险的行为,长期以来大家都知道这一点. 而原因也非常简单,我们可以假设你为你的用户动态生成了一个包含API密钥的Ja ...
- Android 时间日期Widget 开发详解
桌面Widget其实就是一个显示一些信息的工具(现在也有人开发了一些有实际操作功能的widget.例如相机widget,可以直接桌面拍照).不过总的来说,widget主要功能就是显示一些信息.我们今天 ...
- iOS开发-xCode6(iOS 8)中应用程序图标和启动页面设置
iOS8中设置应用程序图标跟之前没有什么变化,命名规则不变,不过至于设置启动页面,网上给的方式很多都是模棱两可的,东平西凑总算是把启动页面的图片设置成功了,iOS设置启动图片有两种方式一种是Launc ...
- Android中Intent的显示和隐式使用
Android应用程序中组件之间的通信都少不了Intent的使用,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件, ...
- RV 多样式 MultiType 聊天界面 消息类型 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- golang struct转map
struct转map package main import ( "fmt" "reflect" "time" ) type User st ...