У нас есть веб-приложение, работающее на месте у множества клиентов. Web.config содержит многоСплит-специфические и специфичные для клиента компоненты web.config
- материал, который является «частью нашего приложения» (например, большинство
<system.web>
и<system.webServer>
блоков) и - материал, который нужно настроить (строки подключения, настройки приложения, и различные пользовательские теги).
Во время обновлений часть 1 должна быть заменена, а часть 2 должна быть оставлена как есть. В идеале у меня бы были web.app.config
и web.custom.config
, поэтому я могу заменить только первый. Разумеется, IIS должен был бы волшебным образом «объединить» те во время выполнения, чего он не делает.
я нашел следующие подходы:
Put the custom stuff in external files, т.е.
<appSettings configSource="appSettings.config"/>
.Я не могу использовать это, потому что его можно использовать только для полных секций. Но, например, параметр
aspnet:MaxHttpCollectionKeys
является значением, которое should be controlled by the application, тогда как другие значения параметров приложения должны быть настраиваемыми.Parameterization or Web.Config Transformation.
Я не могу использовать это, потому что наши клиенты имеют различные версии нашего приложения. Таким образом, мне нужно: заменить частями web.config, специфичными для приложения, а не преобразовывать отдельные теги. Кроме того, я бы хотел избежать добавления msdeploy в наш процесс развертывания (xcopy плюс некоторые скрипты для создания приложений IIS и их оптимальной работы в данный момент). О, и у меня все равно будет один большой web.config, связанный с конкретными приложениями и конкретными клиентами.
Есть ли какое-то элегантное решение, которое я пропустил?
Я думаю, вы ничего не пропустили. Дизайн web.config не требует такого требования. –
@Downvoter: Обратная связь для улучшения вопроса всегда приветствуется. – Heinzi