配置文件的继承与覆盖: Machine.config / Web.config /子目录 Web.config

本文介绍了C#中配置文件的三个层级:机器级别、应用程序级别及子目录级别,并详细阐述了它们之间的继承与覆盖关系。文章通过示例代码展示了如何在不同级别的配置文件中读取连接字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

C#有三种级别的配置文件:

机器级别      machine.config  在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 中

应用程序级别的     web.config    

子级别的      web.config    在子目录中     

 

她们依次具有继承和覆盖关系:  机器级别 >  应用程序级别 > 子级别

(1)application中可以读取到machine级别的配置信息,子目录中可以读取到application和machine级别的配置信息,所以依次具有继承关系。

(2)同时因为子配置信息 会覆盖父级配置信息,所以需要remove移除以前的配置信息 或者clear父级配置信息。

(3)application级别不能读取子目录的配置信息,因为继承是单方向的。

 

//application级别的示例:

<connectionStrings>
<remove name="LocalSqlServer"/>
<!--<clear/>-->
<add name="LocalSqlServer" connectionString="hahhahhahah"/>
<add name="dbconnStr" connectionString="Data Source=(DESCRIPTION =

 

namespace DIDAO.Admin
{
    /// <summary>
    /// testConfig 的摘要说明
    /// </summary>
    public class testConfig : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            string conCurr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString;
            //如果机器级别有这个name,而应用程序也有这个name,就会报错,需要remove移除机器级别的name 或clear清楚机器级别的所遇配置。
            string conMach = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
            //子类级别的配置文件 : 必须在子目录级别才能读取
            string conChild = ConfigurationManager.ConnectionStrings["child"].ConnectionString;

            context.Response.Write("应用程序级别的config:"+conCurr+"<br/>");
            context.Response.Write("机器级别的config:" + conMach + "<br/>");
            context.Response.Write("子级别的config:" + conChild + "<br/>");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

//子目录级别的示例:

<connectionStrings>
<add name="child" connectionString="asasasasasasaaas"/>
</connectionStrings>

 

namespace DIDAO.Admin.testDir
{
    /// <summary>
    /// testChild 的摘要说明
    /// </summary>
    public class testChild : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.ContentType = "text/html";
            string conCurr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString;
            //如果机器级别有这个name,而应用程序也有这个name,就会报错,需要remove移除机器级别的name 或clear清楚机器级别的所遇配置。
            string conMach = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
            //子类级别的配置文件 : 必须在子目录级别才能读取
            string conChild = ConfigurationManager.ConnectionStrings["child"].ConnectionString;

            context.Response.Write("应用程序级别的config:" + conCurr + "<br/>");
            context.Response.Write("机器级别的config:" + conMach + "<br/>");
            context.Response.Write("子级别的config:" + conChild + "<br/>");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

 

posted on 2015-09-23 19:46 AdolphYang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/adolphyang/p/4833349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值