zoukankan      html  css  js  c++  java
  • 配置文件的继承与覆盖: Machine.config / Web.config /子目录 Web.config

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

    机器级别      machine.config  在 C:WindowsMicrosoft.NETFramework64v4.0.30319Configmachine.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;
                }
            }
        }
    }
  • 相关阅读:
    python实现压缩文件成zip格式
    python实现自动发送邮件
    jmeter业务建模中遇到的问题
    python开发环境必备之vim配置
    第五章 python中的异常处理
    第四章 python中的面向对象设计
    第三章 python中的字符串
    Web前端面试题目及答案汇总
    做一个网站一般的步骤流程有哪些
    不用新变量直接交换现有两个变量的值
  • 原文地址:https://www.cnblogs.com/adolphyang/p/4833349.html
Copyright © 2011-2022 走看看