WebDAV и WebAPI вместе вызывают ошибку: обработчик "ExtensionlessUrlHandler-Integrated-4.0" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей
У меня есть как WebDAV установлен и работает на моем сайте, как виртуальный суб-сайт у меня есть сайт MVC WebAPI, API отлично работает, пока я не попытаюсь отправить запрос PUT на него, то я получаю следующую ошибку:
HTTP Error 500.21-Внутренняя ошибка сервера
обработчик " ExtensionlessUrlHandler-Integrated-4.0 "имеет плохой модуль" ManagedPipelineHandler " в своем списке модулей
Если я отключу WebDAV, то все работает нормально, и я не получаю ошибки. Это происходит только при включении WebDAV.
У меня есть следующий код в мой веб.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Я пробовал возиться с различными пулами приложений.
Я также устал от всех вещей, упомянутых во всех этих вопросах:
ничто из этого не решило мою проблему, есть ли что-то еще, что я не пробовал?
4 ответов
мы закончили тем, что пошли в Microsoft с этим, они рассмотрели его в течение нескольких недель, прежде чем вернуться, сказав, что невозможно запустить WebDAV и WebAPI на одном сайте.
они попытаются решить эту проблему в будущем выпуске IIS.
@jblaske имеет хороший ответ.
Если вы хотите удалить его временно, то, возможно,в этой статье - лучшее решение.
Если вы хотите удалить обработчик все вместе, выполните следующие действия.
- откройте IIS и перейдите на соответствующий сайт.
- нажмите "сопоставления обработчиков"
- найдите обработчик с именем "WebDAV"
- выберите его и удалите
Это мой оригинальное сообщение.
у вас может быть проблема с опечаткой в объявлении обработчиков. блог Томаса Марквардта говорит
устранение неполадок 5.0
Если вы получаете ошибку, подобную приведенной ниже, ваш раздел, вероятно, недействителен.
HTTP Error 500.21-внутренний обработчик ошибок сервера "" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей вы, вероятно имейте сопоставление обработчика, которое не имеет правильного предварительного условия. сервер IIS не прощает в отношении опечаток, и предварительные условия чувствительный к регистру. Текст должен быть предварительным условием= "integratedMode" или предварительное условие= "classicMode".
также, еще одно предложение из комментариев к этой статье:
Эндрю Джонсон 25 янв 2011 3: 20 AM #:
я обнаружил, что я также могу получить " обработчик имеет плохой модуль ManagedPipelineHandler в своем списке модулей " если обработчик имеет requireAccess= "None". Для меня перемены это для requireAccess= " читать" сделал ошибку уйти.
этот комментарий может применяться к вашему случаю, как я вижу, что в applicationHost.настройте запись для обработчиков WebDav (обратите внимание на requredAccess="None"
):
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
Я начал получать эту ошибку после того, как я удалил модуль WebDAV и обработчик вручную из IIS, чтобы получить работу. Мне пришлось удалить роль сервера "WebDAV Publishing", чтобы преодолеть эту ошибку. После удаления этой роли и перезапуска IIS PUT работает нормально.