Как заставить статическую HTML-страницу проходить через HttpModule в IIS7.0? - PullRequest
5 голосов
/ 20 января 2012

Я создал простой HttpModule, который удаляет пробелы из ответа перед отправкой его клиенту.Это прекрасно работает для страницы aspx на IIS7.0, но если я создаю статическую HTML-страницу и вызываю ее, HttpModule не срабатывает (насколько я знаю, так как источник содержит пробелы, которые в противном случае должны были бы быть удалены).Очевидно, что-то я не правильно делаю, но не знаю, что.

Мой сайт находится в пуле приложений с .NET 4.0 и ManagedPipelineMode = Integrated.

Я добавил свой модуль в качестве ManagedModuleи относится к сборке со строгим именем-ключом от GAC.

спасибо

Edit - здесь часть system.webserver из web.config

<system.webServer>
  ...
  <modules runAllManagedModulesForAllRequests="true">
    <add name="RemoveWhitespaceHttpModule" 
         type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules, 
           Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d" 
           preCondition="" />
  </modules>
  <defaultDocument>
    <files>
      <add value="TestForm.aspx" />
    </files>
  </defaultDocument>
</system.webServer>

Edit-Починил это.Для всех, кто интересуется, вот как мой модуль проверяет ответ и затем решает, продолжить ли удаление пробела или нет

if (contentType.Equals("text/html") 
  && httpContext.Response.StatusCode == 200 
  && httpContext.CurrentHandler != null)
{ ... }

Проблема была с третьим условием выше httpContext.CurrentHandler! = Null .при вызове этого модуля для статических .html-страниц currentHandler был нулевым, и, следовательно, код никогда не уходил внутрь для манипулирования html.Я удалил это третье условие, и теперь оно работает.спасибо всем за ответы

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Это должно помочь, в файле web.config:

<modules runAllManagedModulesForAllRequests="true"></modules>

Это быстрое и простое решение, но может вызвать проблемы / проблемы с производительностью.

1 голос
/ 20 января 2012

Вам нужно взглянуть на отображение обработчика в вашем IIS.

Как работает обработчик, так это то, что в IIS обработчик зарегистрирован и должен обрабатывать страницу определенного типа.Вы можете посмотреть «Сопоставления обработчиков» в IIS [В команде run введите inetmgr и нажмите ввод.Появится диспетчер IIS, который будет искать сопоставления обработчиков в разделе IIS.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...