使用 ConfigSource 特性 拆分 Web.config 文件
一个大项目里可能会有非常多个配置参数,有.Net自己支持的配置(比如WCF,AppSettings),还有一部分是自定义的配置(比如继承自ConfigurationSection和ConfigurationElement的配置类),当然还有一部分是第三方类库的配置(其实也是自定义的配置,比如AOP框架Unity),当这些配置变得越来越多的时候,维护起来变得相当困难,特别是config文件内容相当的长和文件的容量过大,过大的文件在Config初始化读取文件时会带来性能影响,这个时候使用configSouce指定外部的文件,拆分成多个不同的文件存储配置,增强可读性和可维护性,降低出错的风险。
MSDN里提到了3点好处:
Using include files can result in a more logical and modular structure for configuration files. (模块化管理文件)
File-access security and permissions can be used to restrict access to sections of configuration settings. (可控制不同配置文件的访问权限)
Settings in an include file that are not used during application initialization can be modified and reloaded without requiring an application restart. (修改不在应用程序初始化时候使用的参数,不需要重启应用)
很多文章里都也已经说了关于ConfigSouce的用法,根据MSDN说明,ConfigSouce只能用于ConfigurationSection对应的节点,比如
<appSettings configSource="Config\\AppSettings\\appSettings.config">
</appSettings>
在appSettings.config里
<appSettings>
<add key="IOS" value=""/>
<add key="Android" value=""/>
</appSettings>
这里appSettings是定义在machine.config里configSection,这样.Net会自动找到对应文件。
对于appSettings,在Web.config里IDE会给你智能提示,告诉你它支持configSouce属性,但是有些不会,比如配置WCF服务的system.serviceModel/services节点,这种节点也是支持的,因为从machine.config里会看到,services也是一个ConfigurationSection

所以如下配置是正确的:
<services configSource="Config\\ServiceModel\\Services.config">
</services>
对于自定义的配置,或者第三方类库配置,因为都是继承了ConfigurationSection

所以如下配置也是正确的:
自定义的邮件相关配置
<VRentEmail configSource="Config\\VRentEmail\\VRentEmail.config">
</VRentEmail>
Unity的配置
<unity configSource="Config\\Unity\\Unity.config">
</unity>
使用了configSource后有一个明显的缺点就是,智能感知没有了
使用 ConfigSource 特性 拆分 Web.config 文件的更多相关文章
- Web.Config文件中使用configSource
我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有会话(session)丢失.然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话 ...
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...
- 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...
- .net中Web.config文件的基本原理及相关设置
11.7 使用web.config配置文件 Web配置文件web.config是Web 应用程序的数据设定文件,它是一份 XML 文件,内含 Web 应用程序相关设定的 XML 标记,可以用来简化 ...
- 跨域Ajax请求 web.config文件配置
在web.config文件的<system.webServer>节点下面添加如下配置代码:<!--允许跨域ajax访问--> <httpProtocol> < ...
- HTTP 错误 500.19 – Internal Server Error web.config 文件的 system.webServer/httpErrors 节中不允许绝对物理路径“C:\inetpub\custerr”[转]
给ASP或者ASP.NET等需要配置IIS服务器的过程中,很可能会遇到以下两种错误.尤其是用Win7系统的,配置IIS7.0版本比用XP系统配置IIS5.1版本而言要复杂复杂一些.当同时需要配置ASP ...
- Web.config 文件中的 system.webServer
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...
- web.config文件中配置数据库连接的两种方式
web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报 分类: 数据库(74) 在网站开发 ...
- .net 操作web.config文件
XmlDocument doc = new XmlDocument(); string wc = HttpContext.Request.PhysicalApplicationPath + @&quo ...
随机推荐
- 郑厂长系列故事——排兵布阵 hdu4539(状态压缩DP)
郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- 入门VMware Workstation下的Debian学习之Vim简单使用(三)
什么是Vim? Vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计. Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广 ...
- Python面试题之copy/deepcopy详解
copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...
- gitlab仓库迁移
遇到一个情况,需要将两个gitlab仓库合并.好在都是使用的ldap账户登陆,用户账户不需要迁移. 实际的使用情况下,需要迁移的主要部分为分组及分组下项目.gitlab的api还是很给力的,能够获取所 ...
- Linux向文件添加内容的几种方法
例如,要想test.txt文件添加内容"I am a boy",test.txt在当前目录中 方法一:vi编辑法 打开终端,输入vi test.txt 回车,按a或i进入编辑模式, ...
- C# 剪贴板中文乱码问题
最近写了个小工具.主要功能是生成一些数据,然后一键复制,最终粘贴到需要的地方. 本来一切正常的,可是当把工具拿给朋友使用时,却被告知粘贴出来的数据是乱码.当时第一时间想到是区域问题(朋友是台湾人),不 ...
- 开源的JavaScript插件化框架MinimaJS
本文介绍我开发的一个JavaScript编写的插件化框架——MinimaJS,完全开源,源码下载地址:https://github.com/lorry2018/minimajs.该框架参考OSGi规范 ...
- [Java第一个游戏]JFrame文本框下贪吃蛇
刚刚接触java的文本框绘图的知识点,然后就可以按照老师的提醒做一些简单的游戏,对JFrame加深一下,下面就贪吃蛇给出一些源代码,其实正真的实现的代码并不多,只是稍微处理一下就可以明白,下面代码均有 ...
- linux命令行下svn常用命令
linux命令行下svn常用命令 1. 将文件checkout到本地目录 1 #path是服务器上的目录 2 svn checkout path 3 4 #示例 5 svn checkout svn: ...
- 实验测试之------创建DBlink,查询远端的yang用户下的abcdedfa表,创建同义词
--测试环境,20远端,30本地: --准备1,20远端建立表的同义词,用户信息: 1.11 ---------------------------------------------------准备 ...