Asp.net中的web.config配置
2024-06-04 本站作者 【 字体:大 中 小 】
是中保存配置信息比如连接字符串等的重要文件。它是基于xml的文本文件方式放在Web应用程序的任何目录中,并且默认不随源文件编译到Dll中,而运行环境随时监视着它是否有改变,一但有变动,系统会自动重新加载里面的最新内容。
一、 配置文件保存位置
.net的默认配置文件保存在"windows目录\\Framework\对应.net版本\config"文件夹下面。不同的windows目录不一样,我们在命令行下输入"echo %windir%"查看windows目录所在的位置。
图:所在的目录
中有两个非常重要的配置文件,分别是和,它们都位于config文件夹下面。这两个文件一般不需要我们手工是维护它,保持默认即可。但针对应用程序,它自身会有0个,1个或者多个配置文件,多个配置文件会存在加载顺序问题。下节会介绍。
注意,传说中.net3.0和.net3.5只是在.net2.0的基础上扩充中,所以还是没用的.net2.0的配置文件。它们连config这个目录都没有。
二、 配置文件加载顺序
在网站启动时,会加载配置文件中的配置信息,然后缓存这些信息,不会每次要用都去读取配置文件,只是IIS会随时监视着这些文件的变化,一量有变化,它会重新去读取并缓存配置信息。
网站运行时会按照以下方式加载配置文件中的节点信息:
1 如果在当前运行页面所在的目录下有文件,则查找是否存在所需要的节点,如果存在则返回结果,并停止下一步地查找。
2 如里所在目录不存在配置或者配置文件里没有所需要的节点,则查找它所在的上一级目录的配置文件中的节点,直到网站根目录。问题:IIS6中的虚拟目录算不算根目录
3 如果网站根目录中都不存在或者所需要的配置节点,转而到"windows目录\\Framework\对应.net版本\config\"中去查找。
4 如果第3条中还没找到,继续到"windows目录\\Framework\对应.net版本\config\"中去查找。
5 如果还没找到,那就报错吧。
存在两个问题
1 IIS6中的虚拟目录算不算根目录。
2 在系统运行时,在一个原本没有的目录中手工加上一个,会不会自动加载。
三、 配置文件节点介绍
文件是一个xml文本文件,它的根节点为configuration,该节点下包含常见的子节点有:configSections、appSettings、connectionStrings保存数据库连接字符串、location和。下面针对各节点配置进行介绍。
1. configSections
configSections 元素指定了配置节和处理程序声明。由于 不对如何处理配置文件内的设置作任何假设,因此这非常必要。但 会将配置数据的处理委托给配置节处理程序。配置结构信息如下:
configSections
!--定义配置节处理程序与配置元素之间的关联。--
section /
!--定义配置节处理程序与配置节之间的关联。--
sectionGroup /
!--移除对继承的节和节组的引用。--
remove /
!--移除对继承的节和节组的所有引用,只允许由当前 section 和 sectionGroup 元素添加的节和节组。--
/configSections
每个 section 元素标识一个配置节或元素以及对该配置节或元素进行处理的关联 ConfigurationSection 派生类。可以在 sectionGroup 元素中对 section 元素进行逻辑分组,以对 section 元素进行组织并避免命名冲突。section 和 sectionGroup 元素包含在 configSections 元素中。
如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。
下面我们来示例写一个自定义配置信息,并完成它的SectionHandler,首先我们在configuration节点下添加configSections。
configuration
configSections
sectionGroup name="mySectionGroup"
section name="mySection" requirePermission="true"
type="," /
/sectionGroup
/configSections
mySectionGroup
mySection
add key="key1" value="value1" /
add key="key2" value="value2" /
add key="key3" value="value3" /
add key="key4" value="value4" /
add key="key5" value="value5" /
/mySection
/mySectionGroup
compilation debug="true" targetFramework="4.0" /
/configuration
编写自定义SectionHandler,我们为MySectionHandler返回一个Hashtable的数据。
namespace
public class MySectionHandler : IConfigurationSectionHandler
public object Createobject parent, object configContext, section
Hashtable ht = new Hashtable;
foreach XmlNode node in
if == "add"
"key".Value, "value".Value;
return ht;
在页面中使用该Section,由得到SectionHandler返回的Hashtable。注意参数结构。
protected void Page_Loadobject sender, EventArgs e
Hashtable ht = "mySectionGroup/mySection" as Hashtable;
foreach DictionaryEntry de in ht
+ " - " + + "br";
2. appSettings
该节点下主要用来存储应用程序的一些配置信息,也可以把数据库连接字符串也放在这里,不过.net2.0提供了connectionStrings节点,所以数据库连接字符串还是不建议放在这里,下面为一个图片类型的实例。
appSettings
!--图片类型扩展名--
add key="ImgType" value=".bmp;.jpg;.gif;.png"/
/appSettings
调用方法为:
string ImgType = "ImgType";
3. connectionStrings
connectionStrings和appSettings类似,不过用于保存配置数据库连接信息,下面给一个实例。
connectionStrings
/connectionStrings
调用方式为:
string connStr = "SqlserverConnStr".ConnectionString;
为.net应用程序的行为方式配置节点,该节点包含很多子节点,很多子节点已经由.net配置好了,这里我们只来看看一些重要的配置节点。
? customErrors
customErrors defaultRedirect="" mode="RemoteOnly"
error statusCode="500" redirect=""/
/customErrors
其中mode属性有三种值,On/Off/RemoteOnly,默认为Rem
猜你喜欢
蔚蓝档案国服和谐了哪些国际国服和谐对比一览
鸣潮猎取残像之人任务如何通关猎取残像之人任务玩法介绍
鬼谷八荒北冥摄魂在哪获取鬼谷八荒北冥摄魂获得位置介绍
宝可梦大探险椰铃球果食材大挑战活动介绍
母亲节收到孩子的礼物的心情说说2022母亲节收到孩子礼物的幸福说说
金铲铲之战神盾使羁绊什么效果福星版本羁绊神盾使介绍
楚门的世界经典台词楚门的世界早安午安晚安
鸣潮唤取凭证怎么用鸣潮唤取凭证使用方法
原子之心成就大全,Xbox成就列表详解
原神砂糖怎么用原神砂糖抽取建议和选择推荐
2024去云南旅游最佳路线 云南旅游的最佳路线安排
2024最适合穷游的12个地方 一个人穷游去哪里好
2024桂林必去五个景点 桂林旅游必看景点
2024清明家庭旅游最佳去处 清明节去哪里玩比较好
张家界旅游必去景区 张家界旅游景点推荐
2024重庆旅游攻略 2024年重庆旅游景点
西安旅游攻略自由行路线推荐 第一次去西安旅游攻略
2024昆明旅游攻略景点大全 昆明有什么好玩的地方推荐
成都旅游必去十大景点推荐 四川成都最值得去的十大景点
2024山西旅游必去十大景点 山西必去景点攻略地