Can a web.config read from an external xml file?

前端 未结 4 1019
死守一世寂寞
死守一世寂寞 2020-11-30 03:43

I have to duplicate some settings (like connection string) between a web.config file that a WCF host uses and a web.config file that a web client uses.

In the intere

相关标签:
4条回答
  • 2020-11-30 03:53

    Yes, any configuration section can be "externalized" - this includes things like <appSettings>, <connectionStrings> and many more.

    You'd have something like this in your web.config:

    <configuration>
       <appSettings configSource="appSettings.config" />   
       <connectionStrings configSource="connectionStrings.config" />
       <system.web>    
          <pages configSource="pages.config" />
          <httpHandlers configSource="httphandlers.config">
       </system.web>    
    </configuration>
    

    The externalized config's would just contain that one subsection in them:

    httphandlers.config:

    <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
    </httpHandlers>
    

    Note you cannot externalize the entire <system.web> part, since that is a configuration section group - not a configuration section - but you can externalize most of the sub-sections contained in system.web.

    0 讨论(0)
  • 2020-11-30 03:54

    you can specify your connectionstrings outside of your web.config http://blog.andreloker.de/post/2008/06/Keep-your-config-clean-with-external-config-files.aspx but it has to be in the same directory.

    0 讨论(0)
  • 2020-11-30 04:01

    A config file can point to other config files as long as the files are in the same path (including subdirectories).

    Here is an example of my config settings:

    <connectionStrings configSource="web\config\connectionStrings.config" />
    <appSettings configSource="web\config\appSettings.config" />
    <system.diagnostics configSource="web\config\diagnostics.config" />
    <system.serviceModel>
        <bindings configSource="web\config\serviceModelBindings.config" />
        <behaviors configSource="web\config\serviceModelBehaviors.config" />
        <services configSource="web\config\serviceModelServices.config" />
        <client configSource="web\config\serviceModelClient.config" />
    </system.serviceModel>
    

    In my case, I have several windows applications in a root folder which include a web application as a subfolder. This allows each application's config file to point to the shared configs.

    0 讨论(0)
  • 2020-11-30 04:06

    if you can, just put the configurations in common in the Machine.Config. They both can read from there, and each web.config can override any values you need.

    I say if you can, because I know that many hosting companies won't let you modify it unless you are renting a dedicated server.

    0 讨论(0)
提交回复
热议问题