Почему мой machine.config HttpModule не работает в моем веб-приложении? - PullRequest
0 голосов
/ 25 октября 2011

Я написал 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 Ответ

1 голос
/ 29 декабря 2011

Очевидно, 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>
...