Переход с IIS6 на IIS7.5 — Пользовательские обработчики

#iis-6 #httphandler #iis-7.5

#iis-6 #httphandler #iis-7.5

Вопрос:

Я переношу сайт с IIS6 на одном сервере на IIS7.5 на другом. Этот сайт был написан не мной, и, насколько я могу судить, они используют пользовательские обработчики, чтобы обойти ограничения AJAX того времени. Я скопировал код со старого сервера на новый (предварительно скомпилированный), и все работает, за исключением «AJAX». В коде есть несколько вызовов файлов ashx. Эти вызовы возвращают файлы .js. На старом сервере это отлично работает. Не работает на новом сервере. В файле web.config я обнаружил следующие строки:

 <httpHandlers>
<add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
  

По какой-то причине это не работает в IIS7.5
Любые предложения приветствуются.

Спасибо!

Ответ №1:

Я подозреваю, что это может быть связано с настройкой режима конвейера, управляемого пулом приложений. Вы можете легко подтвердить это, изменив режим управляемого конвейера для пула приложений, в котором работает сайт, на классический. Если это сработает и вы хотите продолжить запуск в интегрированном режиме, вам нужно будет добавить раздел обработчиков в web.config. Это отличается от информации о HttpHandlers, которую вы отметили выше.

Раздел «Новые обработчики» должен находиться в разделе system.webServer. Извините, я не знаю точной настройки для элемента, который вы отметили, но вам нужно будет включить предварительное условие =»integratedMode», если вы хотите работать в интегрированном режиме.

Комментарии:

1. Спасибо! Вы справились с этим 🙂 Поскольку это отдельное приложение на веб-сайте, я могу выделить для него собственный пул приложений. Есть ли недостатки в использовании пула классического режима?

2. Насколько я понимаю, я думаю, что запуск в интегрированном режиме позволяет использовать некоторые дополнительные модули, для интеграции которых ранее потребовалось бы использование расширений ISAPI. Вы можете получить дополнительную информацию об этом здесь

3. Я проведу небольшое тестирование в классическом режиме, и если ничего не появится, я просто воспользуюсь этим. Спасибо!

4. Я предполагаю, что с IIS6 и asp.net 2.0 в любом случае используйте классический режим, если он работал раньше, он будет продолжать работать.]

5. Как вы говорите, как будто в IIS6 все работало нормально, с этим не должно быть проблем.