在web.config里使用configSource分隔各类配置

本文深入探讨了.NET框架中配置源的概念,包括如何在web.config和自定义配置文件中应用配置源,以及如何通过公共配置概念实现配置文件的模块化管理与维护。文章还详细介绍了如何在系统.serviceModel部分利用配置源属性,以及配置源属性在不同场景下的应用与限制,旨在帮助开发者更高效地管理项目配置。
摘要由CSDN通过智能技术生成

configSource简介一:

在web.config 中:

<myconfig  configSource="path\xxx.config" />


在自定义path\xxx.config中:

<myconfig>
    <mmm> dd </mmm>
</myconfig>

注意,configSouce中的文件路径只能为相对物理路径,也就是只能为反斜杠(\),不能用斜杠(/)。
在网站运行时,如果修改 Web.Config 文件会引起站点的重启,而修改 xxx.Config 文件则不会.


configSource简介二:

大型项目中,可能有多个Service,也就是会有一堆配置,而这些配置文件如果散落在各个项目的web.config里,那维护量将是非常巨大的,所以有人使用configSource将各咱文件分开放,然后Copy到各处,这样以来配置文件看起来就很模块化了,但这样Copy维护起来还是很麻烦,所以有高人提出公共配置的概念,将这些配置文件放到一个公用目录,然后在各个目录下建立一个虚拟文件夹指向那个公共目录(Junctionhttp://technet.microsoft.com/en-us/sysinternals/bb896768.aspx,如想了解更多可访问:多站点共享:共享配置)天下太平了,要添加修改只用改这一个文件夹的内容就可以了。

我们用到的有:

 

    <appSettings configSource="VConfigs\DEV\appSettings.config" /> 
    <system.serviceModel>
      <services  configSource="VConfigs\DEV\WCF.services.config" />
      <bindings  configSource="VConfigs\DEV\WCF.bindings.config" />
      <behaviors configSource="VConfigs\DEV\WCF.behaviors.config" />
      <client    configSource="VConfigs\DEV\WCF.client.config" />
    </system.serviceModel>
参考内容:

ConfigSource attribute on system.serviceModel section

The configSource attribute was firstly introduced in .NET framework 2.0 to support external configuration files.

This attribute can be added to any configuration section to specify a an external file for that section. Using an external configuration source can be useful in many scenarios. For instance, you could place a section into an external configSource if you need an easy method to swap settings for the section depending on the environment (development, test, or production), or  you need granular control over permissions.

Unfortunately, the system.serviceModel section group does not support this attribute. If you try to add it, you will receive the following exception:

The attribute 'configSource' cannot be specified because its name starts with the reserved prefix 'config' or 'lock'

"configSource" attribute is a property comes from the  section Information class.
Every ConfigurationSection in .net framework 2.0 configuration scheme system
has a property of a section Information where the config source is declared.

 you can use this attribute on the different sections under system.serviceModel such as services, behaviors or bindings.

For instance, the configuration file could look like this,

<configuration>

  <system.serviceModel>

    <services configSource="Services.config" />

    <bindings configSource="Bindings.config" />

    <behaviors configSource="Behaviors.config" />

  </system.serviceModel>

</configuration>

 And then, each file contains the corresponding section.

Services.config

<services>

  <service name="Microsoft.ServiceModel.Samples.CalculatorService"

          behaviorConfiguration="CalculatorServiceBehavior">

    <host>

      <baseAddresses>

        <addbaseAddress="http://localhost:8000/servicemodelsamples/service"/>

      </baseAddresses>

    </host>

    <!-- this endpoint is exposed at: net.tcp://localhost:9000/servicemodelsamples/service  -->

    <endpointaddress="net.tcp://localhost:9000/servicemodelsamples/service"

              binding="netTcpBinding"

              bindingConfiguration="Binding1"

             contract="Microsoft.ServiceModel.Samples.ICalculator" />

    <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->

    <endpoint address="mex"

              binding="mexHttpBinding"

              contract="IMetadataExchange" />

  </service>

</services>

Bindings.config

<bindings>

  <netTcpBinding>

    <binding name="Binding1"

            closeTimeout="00:01:00"

            openTimeout="00:01:00"

            receiveTimeout="00:10:00"

            sendTimeout="00:01:00"

            transactionFlow="false"

            transferMode="Buffered"

            transactionProtocol="OleTransactions"

            hostNameComparisonMode="StrongWildcard"

            listenBacklog="10"

            maxBufferPoolSize="524288"

            maxBufferSize="65536"

            maxConnections="10"

            maxReceivedMessageSize="65536">

      <readerQuotas maxDepth="32"

                    maxStringContentLength="8192"

                    maxArrayLength="16384"

                    maxBytesPerRead="4096"

                    maxNameTableCharCount="16384" />

      <reliableSession ordered="true"

                      inactivityTimeout="00:10:00"

                      enabled="false" />

      <security mode="Transport">

        <transport clientCredentialType="Windows"protectionLevel="EncryptAndSign" />

      </security>

    </binding>

  </netTcpBinding>

</bindings>

Behaviors.config

<behaviors>

  <serviceBehaviors>

    <behavior name="CalculatorServiceBehavior">

      <serviceMetadata httpGetEnabled="true" />

      <serviceDebug includeExceptionDetailInFaults="False" />

    </behavior>

  </serviceBehaviors>

</behaviors>


转自:http://www.cnblogs.com/xiurui12345/archive/2012/05/10/2493783.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值