Совместное использование каталогов между несколькими сайтами

У нас есть несколько различных внутренних сайтов для наших различных компаний/подразделений. Большая часть контента у них уникальна, но у них есть некоторые общие компоненты.

Наша текущая настройка развертывания (отстойная) включает использование инструмента «Копировать веб-сайт» в Visual Studio для копирования/синхронизации файлов между каталогом проекта и местом развертывания на сервере. Затем в IIS на сервере мы можем настроить виртуальные каталоги, указывающие на общие элементы (в основном страницы .aspx). Эти страницы ищут стандартную главную страницу в корне сайта и, таким образом, прекрасно работают на каждом отдельном сайте с соответствующей торговой маркой.

Несколько примеров:

  • /Календарь отпусков
  • /Каталог Телефона
  • /Controls (файлы .ascx)

Хотя в продакшне это работает нормально, это отстой по ряду причин:

  • Инструмент «Копировать веб-сайт» — отстой.
  • Вы не можете отлаживать эти компоненты локально, так как они фактически не существуют на сайте.
  • Сайт не компилируется, что приводит к очевидным проблемам с производительностью.

Поэтому я хотел бы выбросить всю эту чушь и перейти на использование предварительно скомпилированных сайтов с проектом веб-развертывания, который ставит все на свои места на сервере. Это поднимает проблему того, что делать с общими компонентами. Я почти уверен, что мне не сойдет с рук трюк с виртуальным каталогом в такой среде, и, честно говоря, я действительно этого не хочу.

Как создать подкаталог с файлами .aspx/.ascx и связанными ресурсами изображений/скриптов/CSS, которые будут действовать как библиотека классов? Предположим, я помещаю все, что находится в каталоге VacationCalendar, в свой собственный проект/решение, затем каждый сайт интрасети импортирует это и делает все эти файлы доступными по пути /VacationCalendar. Есть ли какой-нибудь способ сделать что-то подобное без больших головных болей?

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


person db2    schedule 14.09.2012    source источник


Ответы (2)


Отказ от ответственности - я не пробовал это.

Создавайте свои общие каталоги как подкаталоги в своих собственных проектах. Разверните эти проекты на веб-сервере на отключенном сайте, но создайте ссылку на фактический подкаталог с работающего сайта.

Итак, в IIS вы могли бы

+ - DisabledWebsite
|   |
|   + --- PhoneProject
|         |
|         + --- PhoneDir (at c:/webs/PhoneProject/PhoneDir
|
+ - EnabledSite
    |
    + --- RealProject (bound to http:something.com for example)
          |
          +-- PhoneDir (virtual linked to c:/webs/PhoneProject/PhoneDir

Затем вы можете скомпилировать PhoneProject и развернуть его отдельно от RealProject. Вам, вероятно, также придется иметь отдельное пространство имен для PhoneProject и поместить его скомпилированную dll в каталог RealProject/bin.

person Thierry    schedule 14.09.2012
comment
Это примерно то, что мы делаем сейчас, и я даже видел, как это предлагалось в статье Microsoft KB, поэтому я предполагаю, что это единственный разумный способ сделать это. В качестве дополнительного вопроса: есть ли способ использовать проекты веб-развертывания таким образом, чтобы это все еще работало? Я действительно ненавижу инструмент «Копировать веб-сайт» и надеюсь избавиться от него. - person db2; 18.09.2012

Это не очевидно или моя идея отстой. Так или иначе:

Создайте мастер-страницу, свяжите все сайты (предварительно скомпилированные) и получите:

  • Загружать на каждый сайт, который сохраняется в определенном каталоге (только для этого сайта)
  • Глобальная загрузка на главной странице, которая сохраняет все файлы в одном каталоге (доступно для всех)

Главная страница может иметь каталог для всех общих ресурсов, и каждый сайт может иметь отдельную папку. Нет путаницы. Вы даже можете потребовать авторизацию для некоторых каталогов и установить привилегии

person David D.    schedule 14.09.2012