Оказывается, вы можете изолировать разделы конфигурации в отдельный файл, который обеспечивает хороший баланс между сохранением конфигурации и возможностью редактирования во время выполнения.
Мой Web.config теперь содержит:
<system.serviceModel>
<bindings configSource="services/bindings.config" />
<client configSource="services/myservice.endpoint.config" />
</system.serviceModel>
, что означает фактические конечные порты / протоколы / и т. Д.могут быть изолированы в своей собственной подпапке.Эта папка теперь настроена как внешняя (подмодуль) в нашей VCS, так что если мы изменим часть инфраструктуры - скажем, перенесем службу на другой физический сервер - мы можем обновить конфигурацию, зафиксировать эти изменения, обновить любой проект с помощьюзависимость от этих разделов конфигурации и избегать необходимости вручную обновлять файлы конфигурации в нескольких развернутых приложениях.
Единственное предостережение заключается в том, что IIS не будет обнаруживать изменения в этих файлах, как это происходит с основным Web.config, поэтомупосле его изменения вам нужно либо коснуться web.config, либо перезапустить веб-приложение.Кроме того, он работает довольно хорошо.