Веб-сервер разработки VS2010 не использует интегрированный режим обработчики/модули HTTP

Я разрабатываю веб-сайт ASP.NET MVC 2, предназначенный для Платформы.NET 4.0, с помощью Visual Studio 2010.

Мой web.config содержит следующий код:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule" />
    </modules>
    <handlers>
        <add name="DotLess" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
    </handlers>
</system.webServer>

Когда я использую Build > Publish для помещения веб-сайта по моему локальному экземпляру IIS7 это работает отлично.

Однако, когда я использую Debug > Start Debugging, ни обработчик HTTP, ни модуль не выполняются ни по каким запросам.

Странно достаточно, когда я поместил обработчик и модуль <add /> теги назад в <system.web /> под <httpHandlers /> и <httpModules />, они работают. Это, кажется, подразумевает, что веб-сервер разработки работает в классическом режиме.

Как я фиксирую это?

18
задан Domenic 25 April 2010 в 12:25
поделиться

2 ответа

Нет. WebDev.WebServer.exe не поддерживает и не может поддерживать интегрированный конвейер.

Итак, если у вас есть код, который нельзя написать для работы в обеих средах, вам нужно будет использовать локальный IIS для разработки.

По сути, system.web - это место для настройки сервера webdev, а также обработчиков и модулей IIS5-6. system.webServer предназначен для обработчиков и модулей IIS7, как вы знаете.

Ссылка :

Каждый запрос в WebDev.WebHost40 (и предыдущих версиях) обрабатывается HttpRuntime.ProcessRequest (, который не поддерживает интегрированный конвейерный режим ). Этот метод используется во всех трех версиях WebHost.WebServer.dll (ядро WebDev.WebServer.exe )

И слова какого-то чувака , который достаточно хорошо знаком с внутренней работой Cassini / WebDev благодаря руководству этим проектом . ; -)

22
ответ дан 30 November 2019 в 08:03
поделиться

Я не уверен, что слишком поздно отвечаю, но, хотя известно, что сервер Cassini не поддерживает интегрированный режим конвейера, вы все равно можете протестировать локально, используя классический конвейер. добавив его в раздел httpModules файла system.web в файле web.config:

  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    .
    .
    .
    <!-- HTTP Modules using Classic Pipeline -->
    <httpModules>
      <add name="YourHttpModule" type="ACME.YourHttpModule"/>
    </httpModules>
  </system.web>

  <system.webServer>
    <!-- HTTP Modules using Integrated Pipeline -->
    <modules runAllManagedModulesForAllRequests="true">
      <add name="YourHttpModule" type="ACME.YourHttpModule"/>
    </modules>
  </system.webServer>

Вероятно, вы захотите удалить раздел httpModules из рабочего файла web.config.

4
ответ дан 30 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: