.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨

关于配置文件的设置,读取有不少细节需要注意的。

A  一般情况下,配置文档会默认使用其下的AppSettings属性中的值。

以下为普通的VB代码实现方式:

Dim exeFileMap As ExeConfigurationFileMap = New ExeConfigurationFileMap()

exeFileMap.ExeConfigFilename = configFilePath

Dim configCache As Configuration 
= ConfigurationManager.OpenMappedExeConfiguration(exeFileMap, ConfigurationUserLevel.None)

Dim rtnValue = configCache.AppSettings.Settings(strKey).Value

B 对于客户自定义的Section必须放在configSections中,在读取这些Section过程时。

需要根据App.Config文件路径,进行判断。

(1) 对于默认路径下App.Config, 可以直接用

Dim nb As System.Collections.Hashtable
= CType(System.Configuration.ConfigurationManager.GetSection("MajorCommands"), _

System.Collections.Hashtable)

Dim rtnValue = nb(strkey)

(2) 对于人为定义的路径,即A中的情况

Dim myParamsSection As ConfigurationSection = configCache.GetSection("USERSECTION")

Dim myParamsSectionRawXml As String = myParamsSection.SectionInformation.GetRawXml()

Dim sectionXmlDoc As Xml.XmlDocument = New Xml.XmlDocument()

sectionXmlDoc.Load(New StringReader(myParamsSectionRawXml))

Dim handler As NameValueSectionHandler = New NameValueSectionHandler()

Dim handlerCreatedCollection As Specialized.NameValueCollection

handlerCreatedCollection = CType(handler.Create(Nothing, Nothing, sectionXmlDoc.DocumentElement), Specialized.NameValueCollection)

If Not handlerCreatedCollection.AllKeys.Contains(key) Then

Return defaultData

Else

Return handlerCreatedCollection(key)

End If

配置文件中需要增加

<configSections>

<section name ="USERSECTION"

type ="System.Configuration.DictionarySectionHandler" />

</configSections>

<appSettings></appSettings>

<USERSECTION>

<!--Customize-->

<add key ="key1" value ="SHINSHO"/>

<add key ="key2" value ="SOJITZ"/>

<add key ="key3" value ="SUMITOMO"/>

<add key ="key4" value ="MITSUBISHI  ELECTRIC"/>

<add key ="key5" value ="MITSUBISHI"/>

</USERSECTION>

当然,如果直接用XML读取控件,来实现也能达到同样的效果。

如果再有疑惑,请直接阅读微软的源代码

https://referencesource.microsoft.com/#System.Configuration

时间: 2024-10-13 15:12:40

.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨的相关文章

使用T4模板生成不同部署环境下的配置文件

在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据库使用的是开发环境的数据库,消息队列也使用的部署在开发机上的消息队列,传统的方式是,由发布或者配置管理员来维护这些不同环境的配置文件.通常,手工的针对不同的环境去修改配置文件容易产生错误. 有很多种不同的方式来针对不同的部署环境生成配置,最笨的方法就是可以维护几套不同的配置文件,然后在编译事件中根据

windows环境下如何搭建Consul+Ocelot

# <center>Consul+Ocelot的服务网关与注册等功能的实现</center> 此文档主要提供给开发人员使用, 暂时仅实现服务注册.服务发现.负载均衡等功能, 更多功能需配合官方文档或第三方文档进行更细致化开发. ###`有兴趣可以了解一下` * #### Consul相关: * [Consul官网](https://www.consul.io/) * [Consul简介](https://blog.51cto.com/firephoenix/2131616) * [

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

[转]Windows环境下尝试安装并配置PHP PEAR备忘

转自:http://wangye.org/blog/archives/266/ 什么是PEAR 来自百度百科:PEAR 是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库,简单地说,PEAR之于PHP就像是CPAN(Comprehensive Perl Archive Network)之于Perl. 由此可见PEAR是PHP代码的仓库,在这里可以找到很多有用的代码,避免我们重复写一些功能,

C#基础:.NET环境下WebConfig的加密

在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是DpapiProtectedConfigurationProvider和RsaProtectedConfigurationProvider提供程序. 前者在本机加密Web.Config后,只能在本机进行解密,如果需要将Config文件复制到外部主机,则无法进行解密.后者在本机加密Config文件后,可

源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护

前    言 摘   要 MHA 是当 master 出现故障,挑选一个 slave 作为新的 master 并构建成新的 主从架构的管理工具.从 master 出现故障到构建成新的主从架构时间是 10-30 秒.在 master 出现故障时可能会出现 slave 同步的数据不一致的现象,此工具 可以自动应用差异的中继日志到其他 slave 上保证数据的一致性. 一.Mha 优点 1.M aster crash 时可以快速的进行故障切换. 9-12 秒内可以检测到 master 故障, 7-10

在Linux环境下使用SSH判断端口是否通

在Linux环境下使用SSH判断端口是否通 在windows/linux环境下,可以使用telnet判断端口状态,但有时候在Linux环境下没有telnet,所以可以使用ssh判断端口状态. 一.ssh使用方法: 命令:ssh -v -p port [email protected] 说明:-v  调试模式,会输入日志信息 -p  端口号 二.在server01上安装httpd 首先在Linux系统下安装httpd,启动80端口. yum install httpd systemctl star

生产环境下ftp的迁移并构建高可用

说明:这是1个小项目就两台DELL的服务器,和一台IP SAN存储(DELL MD3200i).原来是4台小服务器,而且服务器太老了,经常有问题,这回相当于一次ftp的迁移,以前用的是proftp,这次换成了vsftp.数据量有2.5T. 拓扑很简单: 系统:CENTOS 6.4(64bit) 高可用软件:corosync+pacemaker host:ftp1 192.168.1.190 ftp2  192.168.1.191 stonith(ipmi):ftp1 192.168.1.180

在vSphere环境下简单测试Windows 2016 S2D (2)

在了解了S2D基本概念及架构以后,我们接下来做一些具体的配置及测试.本实验环境搭在vCenter6.0u2上,配置四台虚机作为S2D的节点,每台虚机的具体配置如下: OS:Windows 2016 datacenter 4 vCPU& 8GB RAM 4 vNics 1个40GB磁盘装OS:另外再添加2 x 50GB(模拟PCIe SSD):2 x 100GB(模拟SSD):4 x 300GB(HDD) 本测试的设想是将模拟的NVMe PCIe SSD磁盘作为读写缓存使用,而把SSD和HDD作为