IIS web.config - один и тот же файл для нескольких веб-сайтов

У нас есть IIS 7.5 (не использующий ASP) со следующими сайтами:

  • Site A
  • Site B
  • Site C
  • Site D
  • Site E

Site B, Site C и Site D принадлежат централизованному приложению, которое использует тот же web.config. Хотя IIS позволяет нам использовать web.confg для всех из них, а также унаследованный web.config для каждого сайта, похоже, нет возможности группировать сайты для ограничения этого глобального наследования.

Чтобы проиллюстрировать проблему, я вызову web.config после их содержимого:

  • Site A использует web.config "веб-сайт компании" в /www/static/site_A/web.config
  • Site B использует web.config "central-cms" в /www/cms/site_B/web.config
  • Site C использует web.config "central-cms" в /www/cms/site_C/web.config
  • Site D использует web.config "central-cms" в /www/cms/site_D/web.config
  • Site E использует web.config "доску сообщества" в /www/boards/site_E/web.config

Как видите, у нас есть 5 физических файлов web.config, хотя 3 из них (B, C, D) содержат одинаковое содержимое.

Мы хотим, чтобы сайты B, C и D совместно использовали один файл web.config, но все же хотим, чтобы сайты A и E использовали свои собственные web.config без необходимости отмены наследования.

Возможная структура:

  • /www/static/site_A/web.config (без наследования)
  • /www/cms/web.config (base inheritance)
    • /www/cms/site_B/web.config (+ inheritance)
    • /www/cms/site_C/web.config (+ наследование)
    • /www/cms/site_D/web.config (+ наследование)
  • /www/boards/site_E/web.config (без наследования)

Примечание. Во всех файлах web.config декларируются различные правила и директивы перезаписи для <system.webServer>.

Способен ли на это IIS 7.5?


person Alex    schedule 14.10.2014    source источник


Ответы (1)


На самом деле web.config должен уметь это делать. Поместите общий файл web.config в папку, для которой у каждого сайта есть разрешение на чтение. Затем измените отдельные файлы web.config, чтобы вызвать общий файл:

<appSettings file="/path/to/some/common/web.config">

Затем этот общий файл можно использовать для любых файлов, которые в нем нуждаются, и игнорировать те, которым он не нужен. Вы даже можете переименовать его в common.config или что-то в этом роде, чтобы он не передавался по наследству. Итак, это сработает:

<appSettings file="/www/common.config">

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

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

person Joel Etherton    schedule 14.10.2014
comment
Извините, я не пояснил, что нам нужен доступ к system.webServer в web.config. У нас в основном есть перезаписи только в общем конфиге. appSettings, похоже, в нашем случае вообще не выполняется. Примечание. Мы не используем ASP. - person Alex; 14.10.2014