惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
Vercel News
Vercel News
L
LangChain Blog
B
Blog RSS Feed
Y
Y Combinator Blog
IT之家
IT之家
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
V
V2EX
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
有赞技术团队
有赞技术团队
D
Docker
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
月光博客
月光博客

博客园 - 冰绿茶

解决Ehcache缓存警告问题 关于NHibernate、Castle和WCF做分布式事务时发生异常的解决办法 数据绑定控件和XmlDataSource控件结合使用,通过后台绑定Xml数据片段遇到的问题 微软StockTrader 2.03 学习笔记(8)--配置服务实现示例指南(四) 微软StockTrader 2.03 学习笔记(7)--配置服务实现示例指南(三) 微软StockTrader 2.03 学习笔记(6)--配置服务实现示例指南(二) 微软StockTrader 2.03 学习笔记(5)--配置服务实现示例指南(一) 微软StockTrader 2.03 学习笔记(4)--配置数据库生成工具介绍 SQLServer实战经验分享--ServiceBroker安全配置和使用示例 ASP.NET Trick文章系列--使用State Server管理Session状态的另类经济用法 微软StockTrader 2.03 学习笔记(3)--配置网站和配置服务在StockTrader中的使用示例 在数据库事务设计中经常会遇到的疑惑 微软StockTrader 2.03 学习笔记(2)--什么是配置网站和配置服务、配置存储库 微软StockTrader 2.03 学习笔记(1)--学习大纲整理 asp.net 2.0页面性能的考虑--异步页面处理模型 Asp.net 2.0 动态加载其他子目录用户控件问题 .net 2.0 中对配置文件的读写 ASP.NET 2.0加密网站配置文件中的信息 - 冰绿茶 - 博客园 Understanding ASP.NET Provider Model (Creating Custom Membership and Role Providers) - Part 3
Web 下配置文件信息的读写
冰绿茶 · 2006-02-21 · via 博客园 - 冰绿茶

WEB 下配置文件的读写跟 客户端应用程序配置文件 下 对配置文件的读写,几乎完全是一样的。只不过 , web.config 有多重继承的问题。
子网站目录下如果没配置,会继承自上级目录。依次类推,这是一个多层继承的问题。

同样是上篇 Blog 的配置类 ,我们下面来看看 Web 下的读写操作
using System.Web.Configuration;

写操作:
卸载掉原来节,新增节来写操作
        ConfigDataClass configData = new ConfigDataClass();
        configData.ID = 100;
        configData.Name = "我是谁?";
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        config.Sections.Remove("SettingsData");
        config.Sections.Add("SettingsData", configData);
        config.Save();

在原来节基础上的修改操作
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
        ConfigDataClass configData = config.GetSection("SettingsData") as ConfigDataClass;
        configData.ID = 1003;
        configData.Name = "我";
        config.Save();

读操作:
        ConfigDataClass configData = ConfigurationManager.GetSection("SettingsData") as ConfigDataClass;
        if (configData == null) return string.Empty;
        return configData.ToString();

从上面我们可以看到
除了
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
这一行代码 和 引用的 名称空间  using System.Web.Configuration; 不同外,Web 程序跟 客户端应用程序完全是一样的代码。

不论是 Web 程序,还是 客户端应用程序,有时候,一个配置文件是不够的,我们可能需要多个配置文件,下面我们就看看如何对其他配置文件当系统默认的配置文件来读写。
注意,我们这时候用的是 System.Configuration.Configuration 类,不论 Web 程序,还是 客户端应用程序 都可以用这个类。

更新指定的另外配置文件
        ConfigurationFileMap fileMap = new ConfigurationFileMap();
        fileMap.MachineConfigFilename = @"D:\My2005Codes\WebTestCode\TestWEBSite\aa.config";
        System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);

        ConfigDataClass configData = new ConfigDataClass();
        configData.ID = 303;
        configData.Name = "CSDN?";

        config.Sections.Remove("SettingsData");
        config.Sections.Add("SettingsData", configData);
        config.Save();

在写操作之前,这个配置文件可以没有上述配置节,但是必须有下面几行信息,否则就会报没有根节点。
<?xml version="1.0"?>
<configuration>
</configuration>


完成写操作后,这个 aa.config 文件就变成了

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="SettingsData" type="ConfigDataClass, App_Code.yltp08ba, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </configSections>
    <SettingsData id="303" name="CSDN?" />
</configuration>

读取指定的另外配置文件

        ConfigurationFileMap fileMap = new ConfigurationFileMap();
        fileMap.MachineConfigFilename = @"D:\My2005Codes\WebTestCode\TestWEBSite\aa.config";
        System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);

        ConfigDataClass configData = config.GetSection("SettingsData") as ConfigDataClass;
        if (configData == null) return string.Empty;
        return configData.ToString();


如果是 客户端应用程序,你还可以 通过使用 System.Configuration.ConfigurationManager.OpenMappedExeConfiguration  读写多个客户端应用程序默认配置文件。

当然这些功能完全可以用类的序列化,反序列化来用,但是既然有这个功能,干么不用呢?