随笔 - 289  文章 - 1  评论 - 2716  阅读 - 195万

如何分割web.config

      做B/S的朋友对于web.config这个配置文件再熟悉不过了,很多配置的内容都需要在它里面实现,例如最觉的包含以下几个情况:
         1:数据库连接串;
         2:url重写时的一些配置;
         3:日志组件的配置;
         4:诸多常量的配置;
         5...
      这样做本是没有错的,只是我觉的可以改进下,因为这样会使web.config文件日益庞大,以后找一个配置特别难,其实我们可以把有些配置从传统的web.config文件中分割出去。正好同事做了这块,觉的不错,特整理了一下思路。
  

      第一步:按功能创建不同的配置文件,例如我这里创建了一个配置文件SimpleFileDemoConfig.config,里面为了测试只包含一个配置节sUserName。

<?xml version="1.0" encoding="UTF-8"?>
<SimpleFileDemoConfig>        
    
<sUserName>aaa</sUserName>
</SimpleFileDemoConfig>

  

     第二步:写对应的配置文件实体类,SimpleFileDemoConfig.cs,,里面还包含一个不需要序列化的属性,即配置文件的名称。

                注意点:

                         1:类里面的属性和配置文件的名称完全相同。方便序列化和反序列化。

                          2:并且标明此类可序列化。

                          3:类名保持和配置文件的名称相同,即SimpleFileDemoConfig。如果不是会在反序列化时报错哟。 

复制代码
/// <summary>
    
/// 第一步:建立配置文件的实体类.只包含属性和私有字段.不提供任何方法.
    
/// 包含两部分:1.需要保存到配置文件中的属性.  2.不需要序列化的子文件路径.
    
/// 配置文件和类属性名相同
    
/// </summary>

    [Serializable]
    
public class SimpleFileDemoConfig
    
{
        
需要序列化的配置文件属性

        
相对于Config文件夹的子文件路径,不需要序列化.
        
    }
复制代码

     第三步:先设计一些工具类。
             1:配置文件的序列化和反序列化的工具类SerializationHelper.cs,这主要包含两个方法,序列化Save和反序列化Load,接受的参数都是对象类型和配置文件路径。
             
Code        

            2:文件监视工具类FileWatchHelper,主要参考了log4net的部分源码。它会监控配置文件的变化,包含内容变化,最后修改时间等。一旦发现配置文件有变则调用相应方法更新配置文件类的实例。            

Code

   

      第四步:建立一个CustomWebConfig类,它统一管理所有自定义的配置类,它主要包含一个启动方法,它的功能包含两个方面:

             1:是将自定义的配置文件反序列化成实例变量供开发员调用。

             2:对配置文件进行监视,一旦配置文件发生变化,同时更新实例变量的内容,达到信息同步。

Code

      第五步:找一个合适的地方启动自定义的配置类应用,可能选择在Global中的Application_Start中添加CustomWebConfig.OnStart("");

      第六步:客户端调用。  

string sUserName= CustomWebConfig.SimpleFileDemoConfig.sUserName ;

 

      总结:上面的六步就实现了web.config文件分割,简单实用.以后如果想增加一个节点的内容只要做如下两步就行:
            1:修改配置文件SimpleFileDemoConfig,例如增加一个节点<sPS>aaa</sPS>。
            2:为SimpleFileDemoConfig.cs类增加一个属性,属性名称和配置文件中增加的节点名称相同即可。

posted on   min.jiang  阅读(3470)  评论(8编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2008年12月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示