Я разрабатываю управляемый модуль HTTP, который будет перехватывать запросы и ответы от IIS 7. Перехваченные сообщения будут изменены на основе набора бизнес-правил с помощью настраиваемого фильтра.Бизнес-правила будут храниться в файле конфигурации.
Сообщения должны быть перехвачены на веб-сайте.Это включает любые приложения или виртуальные каталоги, которые существуют как дочерние элементы веб-сайта.Моей первой попыткой было установить сборку модуля HTTP в каталог bin нужного веб-сайта (например, C: \ inetpub \ wwwroot \ bin для веб-сайта по умолчанию).
После установки я изменяюэлемент <compilation>
файла web.config веб-сайта для ссылки на сборку, например:
<compilation debug="false">
<assemblies>
<add assembly="Company.Product.Module, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" />
</assemblies>
</compilation>
Я также изменил элемент <modules>
файла web.config веб-сайта.
<system.webServer>
<modules>
<add name="MyModule" type="Company.Product.Module.MyModule" />
</modules>
</system.webServer>
Это хорошо работает для большинства контента на веб-сайте.Однако, если на веб-сайте настроено приложение (например, / wwwroot / MyApplication), при переходе к любому ресурсу в этом веб-приложении возникает следующая ошибка:
Не удалось загрузить файл или сборку 'Company.Product.Module, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = xxxxxxxxxxxxxxxx 'или одна из ее зависимостей.Системе не удается найти указанный файл.
Существует два способа обойти это:
Опция 1:
Копироватьсборка модуля HTTP и все зависимые сборки в каталоге bin каждого приложения.Я считаю, что мне также нужно будет дублировать информацию о конфигурации из родительского каталога.Это может стать кошмаром управления, поскольку на веб-сайт добавляется все больше приложений.
Опция 2:
Установите сборку модуля HTTP и все зависимые сборки вGAC.Это, кажется, работает довольно хорошо и позволяет избежать больших накладных расходов на управление, однако, где находится информация о конфигурации?Если в файле web.config веб-сайта эта информация унаследована во всех дочерних приложениях?
Каков рекомендуемый метод развертывания всего управляемого сайта модуля HTTP?Как обрабатывать конфигурацию, чтобы вся конфигурация находилась в центральном месте?