Я должен копировать некоторые настройки (как строка подключения) между web.config файлом, что WCF размещает использование и web.config файл, который использует веб-клиент.
В интересах не дублирования у меня могут быть оба web.configs, считанный из отдельного XML-файла? Два web.configs могут быть полностью в различных решениях/проектах, таким образом, я предполагаю, что это не возможно, но требуемое для получения мнения других.
PS: Я действительно понимаю, что могу использовать базу данных для хранения всех настроек конфигурации.
Да, любая секция конфигурации может быть «экстернализована» - это включает такие вещи, как
,
и многие другие.
У вас будет что-то вроде этого в вашем web.config:
<configuration>
<appSettings configSource="appSettings.config" />
<connectionStrings configSource="connectionStrings.config" />
<system.web>
<pages configSource="pages.config" />
<httpHandlers configSource="httphandlers.config">
</system.web>
</configuration>
Внешние конфигурации будут содержать только один подраздел в них:
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>
Обратите внимание, что вы не можете экспортировать весь Часть
, поскольку это группа разделов конфигурации , а не раздел конфигурации, но вы можете перенести большинство подразделов, содержащихся в system.web, во внешний вид.
вы можете указать свои строки подключения вне вашего web.config http://blog.andreloker.de/post/2008/06/Keep-your-config-clean-with-external- config-files.aspx , но он должен находиться в том же каталоге.
Файл конфигурации может указывать на другие файлы конфигурации, если файлы находятся по тому же пути (включая подкаталоги).
Вот пример моих настроек конфигурации:
<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>
В моем случае у меня есть несколько приложений Windows в корневой папке, которые включают веб-приложение в качестве подпапки. Это позволяет файлу конфигурации каждого приложения указывать на общие конфигурации.
если можете, просто поместите общие конфигурации в Machine.Config. Они оба могут читать оттуда, и каждый файл web.config может переопределять любые нужные вам значения.
Я говорю, если можете, потому что я знаю, что многие хостинговые компании не позволят вам изменить его, если вы не арендуете выделенный сервер.