Разделение частей web.config для приложений и клиентов

c# asp.net iis web-config

88 просмотра

1 ответ

У нас есть веб-приложение, работающее локально на множестве клиентов. Файл web.config содержит множество

  1. материал , который является «частью нашего приложения» (например, большая часть <system.web>и <system.webServer>блоков) и
  2. вещи, которые необходимо настроить (строки подключения, настройки приложения и различные пользовательские теги).

Во время обновлений часть 1 должна быть заменена, а часть 2 должна быть оставлена ​​как есть. В идеале, я бы имел и web.app.configи web.custom.config, так что я могу заменить только первый. Конечно, IIS должен волшебным образом «сливать» те во время выполнения, что он не делает.

Я нашел следующие подходы:

  • Поместите собственный материал во внешних файлах , то есть <appSettings configSource="appSettings.config"/>.

    Я не могу использовать это, потому что это может быть использовано только для полных разделов . Но, например, aspnet:MaxHttpCollectionKeysпараметр - это значение, которым должно управлять приложение , тогда как другие значения параметров приложения должны быть настраиваемыми.

  • Параметризация или преобразование Web.Config .

    Я не могу это использовать, потому что у наших клиентов установлены различные версии нашего приложения. Таким образом, мне нужно заменить специфичные для приложения части web.config, а не преобразовывать отдельные теги. Кроме того, я хотел бы избежать добавления msdeploy в наш процесс развертывания (xcopy плюс несколько скриптов для создания приложений IIS и их настройки в настоящее время отлично работают). О, и у меня все еще был бы один большой web.config со связанными с приложением и клиентом материалами.

Есть ли какое-то элегантное решение, которое я пропустил?

Автор: Heinzi Источник Размещён: 08.11.2019 11:06

Ответы (1)


1 плюс

Это правда, что configSourceиспользуется для полных разделов, но appSettingsимеет специальный атрибут, fileкоторый можно использовать для ссылки на файл, который должен быть «объединен» в список appSettings. См. Https://msdn.microsoft.com/en-AU/library/ms228154(v=vs.85).aspx для получения дополнительной информации. Я широко использовал для слияния файл appSettings.config со значениями, специфичными для среды - либо локальными значениями dev (содержащимися в репо), либо файлом, который выгружается на сервер с настройками среды. Полезно при продвижении артефакта сборки через среды qa, uat, prod и т. Д. Для вас этот файл может содержать значения, специфичные для вашего клиента, и не будет меняться при развертывании обновлений.

Альтернативным подходом было бы преобразование вашей конкретной конфигурации клиента в раздел пользовательских настроек . Помимо предоставления вам типизированного доступа к значениям конфигурации, вы можете загрузить его из раздела в файле web.config, загрузить из раздела в файле web.config, который ссылается на другой файл configSource, либо вы можете загрузить его непосредственно из отдельного файл.

Затем вы можете оставить конфигурацию приложения в appSettings или переместить ее в отдельный раздел пользовательских настроек.

Автор: Chris Simon Размещён: 20.08.2016 09:33
Вопросы из категории :
32x32