Управление web.config в многосайтовом решении sitecore

У нас есть многосайтовое решение с индивидуальными визуальными студийными решениями для каждого веб-сайта. Затем у нас есть основное решение для создания/развертывания всех веб-сайтов.

Во-первых, не уверен, что рекомендуется включать web.config в решение Visual Studio. Но я думаю, что все пакеты nuget нуждаются в web.config для добавления своих настроек.

В результате у нас есть web.config для каждого решения. Однако, когда мы развертываем из мастера, web.config перезаписывается каждым сайтом.

Может ли кто-нибудь предложить, как эту проблему можно исправить?

Спасибо.


person Nil Pun    schedule 02.10.2015    source источник


Ответы (3)


Лучше всего использовать каталог APP_Config\Include или, что еще лучше, создать для каждого проекта собственный каталог в папке include. попробуйте изменить web.config как можно меньше. (тогда вы можете исключить web.config из своего развертывания)

Пакеты nuget с изменениями для web.config вне тега <sitecore>. не может быть установлен внутри папки include, требует ручного управления.

person Jan Bluemink    schedule 02.10.2015
comment
Итак, нам нужно вручную обновлять файл web.config для каждой среды каждый раз, когда мы добавляем новые пакеты nuget? - person Nil Pun; 02.10.2015
comment
Не так уж часто бывают изменения в web.config. за пределами тега sitecore. Если это происходит часто, вам нужно как-то с этим справиться. какие нуджеты вы используете? (возможно один совместный web.config, так как изменения не ломают другие проекты без пакета?) - person Jan Bluemink; 02.10.2015

Я бы посоветовал для каждого веб-сайта (в рамках его отдельного проекта) создать свою собственную папку App_Config/Include и создать в ней _project_name_.config, чтобы сохранить все специфичные для сайта настройки там (для дальнейшего слияния в полученный конфиг).

При сборке вы настраиваете (для каждого отдельного проекта) этот файл для копирования в основную папку SITECORE_INSTANCE_WEB_ROOT\App_config\Include вместе с остальными файлами конфигурации исправлений.

введите здесь описание изображения

person Martin Miles    schedule 02.10.2015
comment
Спасибо, Мартин, мы можем сделать это для настроек приложения и конкретных настроек сайта. Что делать, если мы добавили новые configSections и т. д. Другой пример — обновление состояния сеанса с InProc на Custom и т. д. Возможно ли выше через app_config\include? - person Nil Pun; 02.10.2015
comment
Я на 100% уверен, что вы можете сделать это для ЛЮБОГО, что находится в узле ‹sitecore› в файле конфигурации! Не тестировался с внешними, такими как httpHandlers и подобными, не думаю, что они будут работать для исправления конфигурации sitecore. ТАКЖЕ: не имеет отношения к вопросу, но я бы посоветовал извлечь весь раздел ‹sitecore› из web.config в отдельный файл конфигурации App_Config\Sitecore.config. - person Martin Miles; 02.10.2015
comment
Спасибо, Мартин. В другом посте вы реализовали несколько решений для своих проектов. Как вы управляли изменениями, которые требуют обновлений sitecore, например. Параметры WCF, параметры служебной шины Azure, которые могут потребоваться для сайта при использовании конечных точек. - person Nil Pun; 02.10.2015
comment
У меня нет ни WCF, ни Azure. Остальные, такие как ‹sessionState›, являются общими для всего экземпляра. - person Martin Miles; 02.10.2015

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

В соответствии с настройками для конкретного сайта, как указано выше, они должны храниться в файлах App_Config.

person Jack Spektor    schedule 06.10.2015