httpModule в проекте веб-приложения не вызывается при развертывании в IIS

Я нахожусь в процессе преобразования проекта веб-сайта в проект веб-приложения. У меня есть все, чтобы скомпилировать и даже опубликовать (долгий процесс). Однако теперь, когда у меня есть загрузка проекта в IIS, httpModule не вызывается.

Раздел модулей в web.config выглядит так:

<modules runAllManagedModulesForAllRequests="true">
        <add name="ContentWebSite" type="ContentWebSite.ContentWebSite"/>
     </modules>

класс httpModule начинается так:

namespace ContentWebSite
{
   public class ContentWebSite : IHttpModule
   {
      private HttpApplication _Application;

Что мне не хватает? Установка точки останова в конструкторе или методе init класса ContentWebSite никогда не срабатывает, когда я работаю в контексте локального IIS. Когда я запускаю IIS Express, точка останова срабатывает! Как заставить IIS вызывать httpModule?

ТИА,


person Owen    schedule 16.03.2021    source источник
comment
Я думаю, что модуль загружается (если я изменяю тип в web.config на ContentWebSite.Content.WebSit, я получаю сообщение об ошибке, говорящее, что модуль не может быть загружен). Однако конструктор или метод Init не вызываются.   -  person Owen    schedule 16.03.2021


Ответы (2)


Вы можете проверить, не вызвал ли вашу проблему режим пула приложений.

Режим пула приложений: классический или интегрированный.

введите здесь описание изображения

<system.webServer><!--for integrated mode-->
    <modules>
      <add name="modulename" type="ContentWebSite.ContentWebSite" />
    </modules>
  </system.webServer>

  <system.web><!--for classic mode-->
     <httpModules>
      <add name="modulename" type="ContentWebSite.ContentWebSite" />
    </httpModules>
  </system.web>
person Theobald Du    schedule 17.03.2021
comment
Спасибо за ответ. Я только что нашел еще одну подсказку: если я запускаю приложение в IIS Express, выполняется httpModule! При переключении на IIS (где сайт работает в продакшене) httpModule не выполняется. Я проверил пул приложений, и он установлен как интегрированный. - person Owen; 17.03.2021
comment
Взгляните на: stackoverflow.com/questions/26638555/ - person Theobald Du; 18.03.2021
comment
Теобальд Дю - Спасибо за ответ. Функции расширения уже установлены в IIS. У нас есть проекты веб-сайтов asp.net, работающие в IIS, которые имеют httpModules, которые отлично работают. Этот проект веб-приложения просто пропускает httpModule. - person Owen; 18.03.2021

Итак, я заработал, изменив строку имени модуля на это:

<add name="modulename" type="ContentWEbSite.ContentWebsite, appName" />

Где appName — это физическое имя DLL, сгенерированной для проекта!

person Owen    schedule 22.03.2021