博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过编程读写 web.config 中的配置节
阅读量:6242 次
发布时间:2019-06-22

本文共 2703 字,大约阅读时间需要 9 分钟。

       ASP.NET 在 System.Web.Configuration 命名空间中提供 WebConfigurationManager 类,它允许在运行时从配置文件获取信息。为使用方便,应先引入 System.Web.Configuration 命名空间。

 

AppSettings 属性

       提供对应用程序配置文件的 <appSetting> 节的所有自定义信息的访问,每个设置通过一个按名称索引的集合提供。

string isdn1 = WebConfigurationManager.AppSettings["ISDN1"];

 

ConnectionStrings 属性

       提供对应用程序配置文件的 <ConnectionStrings> 节的所有自定义信息的访问,每个设置通过一个按名称索引的集合提供。

string conStr = WebConfigurationManager.ConnectionStrings["NorthwindConnection"].ConnectionString;

 

GetSection() 方法

       返回一个封装了配置文件特定配置节信息的对象

AuthenticationSection authSection = WebConfigurationManager.GetSection("System.web/authentication") as AuthenticationSection;

       搜索使用类似路径的语法执行。不必制定根元素<configuration>,因为所有的配置节都包含在这个元素里。所有配置节的类都定义在 System.Web.Configuration 命名空间的类库里(不在 System.Configuration 中,它只包含所有 .NET 应用程序通用的配置类),所有这些类都继承 System.Configuration.ConfigurationSection 类。

       通过 ConfigurationSection 对象,可以获得应用程序当前状态的很多信息。

 

       下面这个示例显示当前引用的程序集的信息:

CompilationSection compSection = WebConfigurationManager.GetSection("system.web/compilation") as CompilationSection;
foreach (AssemblyInfo assm in compSection.Assemblies)
{
Response.Write(assm.Assembly + "
");
}

       使用 GetSection()方法或后面要介绍的OpenWebConfiguration()方法获取信息时,它们反应的是当前应用程序的符合配置信息。也就是说,是当前web.config文件和那些更高层次的配置文件(例如,跟web。config和machine.config文件)里定义的信息的合并结果。

 

OpenWebConfiguration() 方法

       返回一个可编辑的 Configuration 对象,它提供对指定 Web 应用程序的配置信息的访问。

 

       可以通过 WebConfigurationManager 类修改大多数的配置节,实际上,ASP.NET 管理网页就依赖这一功能。首先调用 OpenWebConfiguration() 方法得到一个 Configuration 对象,然后使用该对象的 GetSection() 方法获取需要修改的配置节,并用 Save() 方法提交修改。

       修改设置时,ASP.NET 会使用同步代码保证多个用户不能同时提交更新来安全地处理更新。

 

       对于你的代码,你最可能修改的是 <appSettings>和<connectionStrings>节的设置。

protected void Page_Load(object sender, EventArgs e)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
Label1.Text = config.AppSettings.Settings["websiteName"].Value;
Label2.Text = config.AppSettings.Settings["welcomeMessage"].Value;
config.AppSettings.Settings["welcomeMessage"].Value = "Hello again!";
config.Save();
}
 

       这个应用程序反应了根Web应用程序目录的累积配置,因为它在调用 OpenWebConfiguration() 方法时传递的值是 Request.ApplicationPath;如果使用子目录的名字,将会得到子目录文件夹的累积设置;如果使用 Request.CurrentExecutionFilePath 路径,将会得到当前网页所在目录的累积设置项。

 

必须注意

       web.config文件绝不是状态管理的理想方案!它只适合偶尔更新设置,因为修改配置设置的代价很大。文件访问速度很慢,修改时的同步化增加了额外的负担,真正严重的是,每次修改配置设置时创建新应用程序域的代价非常大,页面要重新编译为本机代码,并缓存和加载。更糟的是,Application和Caching中的值会丢失,如果你使用进程内的会话提供程序,Session集合中的信息也会丢失。

       还要明白的一点是,如果修改了继承的设置(如machine.config文件中的设置),那么保存变更时,修改的值不会覆盖配置文件中现有的值。相反,新值被保存在本地的web.config文件中,它只会覆盖当前应用程序继承的值,这是一种安全保障机制。

       你还可以使用 SaveAs()把配置文件保存到其他文件中。

       Save()方法还可以接受一个枚举参数:

ConfigurationSaveMode.Modified:保存你所改变的所有的值,即使它们和继承的值没有差异。

ConfigurationSaveMode.Full:把所有内容保存在本地web.config,这在测试盒发布重复配置文件时非常有用

ConfigurationSaveMode.Minimal:只保存与继承级别不同的值。(默认选项)

转载地址:http://jzpia.baihongyu.com/

你可能感兴趣的文章
《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一3.1 本案例研究的背景...
查看>>
哈工大在CoNLL上斩获全球第四,车万翔博士详解背后的技术细节
查看>>
阿里钉钉VS企业微信 谁才是企业级一哥?
查看>>
2015-2020智慧城市物联网市场复合年增长率达23.2%
查看>>
做好数据分析让物联网数据价值最大化
查看>>
OpenStack Days走进北京 主角是用户
查看>>
JVM问题诊断常用命令:jinfo,jmap,jstack
查看>>
叶成辉成神州控股新任CEO 曾在IBM/EMC任职
查看>>
中小企业客户营收增长将成微博2016年主推动力
查看>>
四川能投成功进军智慧城市投资市场
查看>>
雅虎公开三封收到的FBI国家安全信函
查看>>
云计算在大数据形式下的发展
查看>>
如何更好地进行机房项目的控制成本
查看>>
爱立信高通中兴等成立Avanci专利授权平台 旨在加速物联网发展
查看>>
美情报公司:勒索病毒WannaCry的创作者可能是中国人
查看>>
华科技:以市场为导向 以用户体验为标准
查看>>
诺基亚携手Facebook联合开展跨大西洋现场测试
查看>>
如何检查MySQL数据库的主从延时?
查看>>
红炜:改变光伏电站融资难也需水到渠成
查看>>
三星用户迎利好 三星将推月度安全更新
查看>>