Почему мой machine.config HttpModule не работает в моем веб-приложении?

Я написал HttpModule в.NET 3.5, 32-битная Win 2003, IIS 6, который работал отлично. Его сборки были в GAC, а конфиг был в machine.config, Все было отлично в течение многих лет.

Я просто перенес все это на новую.NET 2-4, 64-битную Win 2008 R2, IIS 7.5 машину и поместил ту же старую конфигурацию в machine.config, К сожалению, модуль не указан в списке тех, которые работают на сайте. Когда я помещаю конфигурацию прямо в сайт web.config, тогда он работает, как ожидалось. Почему мое приложение не наследует HttpModule от machine.config ?

Этот конфиг ничего не делает в machine.config, но работает как положено в web.config.

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="MyModule" type="MyModule, MyAssmebly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefghijklmno" />
    </modules>
</system.webServer>

Я поместил конфигурацию в каждый возможный файл machine.config безрезультатно:

  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

ОБНОВИТЬ

Другие элементы конфигурации наследуются от web.config: system.web\compilation а также system.serviceModel\bindings назвать пару. Модуль использует WCF, настроенный в machine.config, Кажется, это просто HttpModule это не наследуется. Нет, нет <clear/> в любом месте.

1 ответ

Решение

По-видимому, machine.config не несет ответственности за определение system.webServer раздел. На самом деле, он определяет раздел как

<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

Обратите внимание на тип: System.Configuration.IgnoreSection,

system.webServer раздел определен в

%windir%\system32\inetsrv\config\applicationhost.config

Сразу после system.webserver раздел, есть

<location path="" overrideMode="Allow">
    <system.webServer>

    <modules>
        <!-- add the module here -->
        <add name="MyModule" type="MyNamespace.MyModule, MyAssmebly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefhijklmnop"/>

    </modules>

    </system.webServer>

</location>
Другие вопросы по тегам