Почему мой 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>