asp net web config的学习笔记.doc
《asp net web config的学习笔记.doc》由会员分享,可在线阅读,更多相关《asp net web config的学习笔记.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 web.config的学习笔记一直都对web.config不太清楚。这几天趁着项目不紧赶紧再恶补下,发现确实是有很多原来不明白的地方。特意记录下来,希望能与各位看官共同进步。小弟自学笔记,有不对的地方还请大神指出来。学习之前,我是抱着一个完全不知道的态度开始的。我想这个方法适用于很多地方,不是有个故事吗:杯子里的水倒掉才能装进去更多的水。所以有很多地方记录的都是挺基础的知识,这也能照顾照顾新手。1,什么是web.config?MSDN上说:ASP.NET 配置数据存储在 XML 文本文件中(每个文件都名为 Web.config)。Web.config 文件可以出现在 ASP.NET 应用程序
2、的多个目录中。在园子里有为大神的说话我觉得也计较容易理解“web.config是中保存配置信息(比如数据库连接字符串等)的重要文件。它是基于xml的文本文件方式放在Web应用程序的任何目录中,并且默认不随源文件编译到Dll中,而运行环境随时监视着它是否有改变,一但有变动,系统会自动重新加载里面的最新内容。”。说到底就是网站的配置文件了。2,web.config的加载顺序前边既然提到了web.config可以在一个网站里出现多个,那在网站运行时候服务器是怎样去执行他们的呢?这就是要了解到web.config的加载顺序了。相信很多新手特别是没有好好接触过web.config知识的童鞋一直都对一个网
3、站有很多个配置文件感到棘手,即新奇又感到迷茫,反正我以前是这样的。但是现在知道了下面这些知识就不会了。IIS在A网站启动时,会加载配置文件中的配置信息,然后缓存这些信息,不会每次要用都去读取配置文件,只是IIS会随时监视着这些文件的变化,一量有变化,它会重新去读取并缓存配置信息。A网站运行时会按照以下方式加载配置文件中的节点信息:1) 如果在当前运行页面所在的目录下有web.config文件,则查找是否存在所需要的节点,如果存在则返回结果,并停止下一步地查找。2) 如里所在目录不存在web.config配置或者配置文件里没有所需要的节点,则查找它所在的上一级目录的配置文件中的节点,直到网站根目
4、录。3) 如果网站根目录中都不存在web.config或者所需要的配置节点,转而到“windows目录Microsoft.NETFramework对应.net版本configweb.config”中去查找。4) 如果第3条中还没找到,继续到“windows目录Microsoft.NETFramework对应.net版本configmachine.config”中去查找。5) 如果还没找到,那就报错吧。可能对于第 3 步, 第 4 步有好多童鞋该不明白了,那个是 iis服务器的默认配置目录。可以这样简单的理解:我们让网站去找一个配置信息,那他肯定就会一层一层的去找配置文件里的节点名称,当网站目录
5、里没有找到的时候,服务器会找自己的配置文件。当这些都没找到,报错吧。这样理解了,就对一个网站拥有多个配置文件不足为奇了吧。其实对于上边说的这个问题,我觉得是在项目开发过程中养成良好的编程习惯就可以完全避免了。在配置文件的表示字段上,尽量不要有重复的。3,web.config节点介绍。这个才是正文吖。因为web.config节点有很多需要知道的地方,我们这里只对那些常用的节点做介绍。前边说了,Web.config文件是一个xml文本文件。所以它的配置信息都是以节点形式存在的。根节点为,常见的子节点有: ,等等。这是什么玩意?我们平时在网站里用到的一些对象或者数据,是配置在web.config里的
6、,但是配在哪呢?就是配置在这个configSections节点下。web.config是网站运行在iis服务器上的配置文件,他怎么可能允许我们随随便便的配置我们自己的节点呢,不行你自己试试, 在任何位置添加任何没有申明的节点, 系统都不会让你通过, 更不会让你去读它了, 当然, 你打算在别的xml文件里添加节点, 然后读出来, 创建对象, 这个没问题。不过这样一样也就失去了配置文件的意义了。所以,为了系统能有组织的管理用户的在配置文件里的自定义信息, 就要使用configSections了。configSections 元素指定了配置节和处理程序声明。由于 ASP.NET 不对如何处理配置文件
7、内的设置作任何假设,因此这非常必要。但 ASP.NET 会将配置数据的处理委托给配置节处理程序。配置结构信息如下:每个 section 元素标识一个配置节或元素以及对该配置节或元素进行处理的关联 ConfigurationSection 派生类。可以在 sectionGroup 元素中对 section 元素进行逻辑分组,以对 section 元素进行组织并避免命名冲突。section 和 sectionGroup 元素包含在 configSections 元素中。如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration
8、元素的第一个子元素。下面我们来示例写一个自定义配置信息,并完成它的SectionHandler.1,首先我们在节点下添加configSections。 说明: 在configSections下添加一个section/sectionGroup子节点, 写好标示名和类型, 然后在紧接这下面实现这个标示名的细节内容,就是我们当初想添加的自己的自定义信息了.以上我们在WebSiteInfo节点下定义了两个节点basicInfo和fileUpload,并定义了节点处理程序类ConfigurationSectionTest.WebSiteInfoHandler,并且随后运用了我们定义的节点。2,我们来看看
9、节点处理程序ConfigurationSectionTest.WebSiteInfoHandler。任意建立一个项目,新建一个类,或者直接在App_Code里新建一个类,如下:namespaceConfigurationSectionTest/ /WebSiteInfoHandler 的摘要说明/ publicclassWebSiteInfoHandler : IConfigurationSectionHandlerpublicWebSiteInfoHandler()/TODO: 在此处添加构造函数逻辑/#region IConfigurationSectionHandler 成员public
10、objectCreate(objectparent, objectconfigContext, System.Xml.XmlNode section)/这里我们首先返回个hello,并且在此处设置一个断点。看看程序什么时候执行到这。returnhello;#endregion可以看到这个处理程序实现了一个叫做IConfigurationSectionHandler的接口,并且里边有个唯一的方法public object Create(object parent, object configContext, XmlNode section), 这里的最后一个参数就是自定义信息那个节点了, 通过处
11、理你配置的这堆信息, 返回你要的对象.3,要使用这个返回的对象,通过System.Configuration.ConfigurationManager.GetSection()方法. 我们在Default.aspx的Page_Load事件处理程序中去访问我们自定义的节点,用ConfigurationSettings.GetConfig(WebSiteInfo/basicInfo);注意参数的格式。这里是 section Group Name/section ,如果是单独的section,就只传这个section的name就好了。protected void Page_Load(object s
12、ender, EventArgs e) Object o = ConfigurationSettings.GetConfig(WebSiteInfo/basicInfo);在Page_Load的代码段里打个断点我们启动调试,看到程序首先执行到ConfigurationSettings.GetConfig(WebSiteInfo/basicInfo);这句。然后执行到ConfigurationSectionTest.WebSiteInfoHandler中的Create函数。我们再看看这时处理函数中参数的值:parent为nullconfigContext 为配置上下文对象。section 的In
13、nerXml为按F11继续执行return hello, 继续执行.在执行到Object o = ConfigurationSettings.GetConfig(WebSiteInfo/basicInfo)后面的“,我们发现o的值为”hello”。相信您已经明白的差不多了,当读取自定义节点的内容时,程序去执行我们定义的节点处理程序,并把节点中的内容传给Create函数中的参数。然后我们在Create中自己处理节点下的内容,并返回我们格式化后的节点内容给调用者,也就是ConfigurationSettings.GetConfig(WebSiteInfo/basicInfo)。注意:程序第一次运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- asp net web config的学习笔记 config 学习 笔记
限制150内