Ответ 1
Мы закончили работу с Microsoft с этим, они просмотрели его в течение нескольких недель, прежде чем возвращаться, говоря, что невозможно запустить WebDAV и WebAPI на том же сайте.
Они попытаются решить эту проблему в будущей версии IIS.
У меня есть и WebDAV, установленный и запущенный на моем сайте, как виртуальный подсайт, у меня есть сайт MVAP WebAPI, API отлично работает, пока я не попытаюсь отправить ему запрос PUT, после чего я получаю следующую ошибку:/p >
Ошибка HTTP 500.21 - Внутренняя ошибка сервера
Обработчик "ExtensionlessUrlHandler-Integrated-4.0" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей
Если я отключу WebDAV, тогда все работает нормально, и я не получаю ошибок. Это происходит только в том случае, если включен WebDAV.
У меня есть весь следующий код в моем web.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.NET\Framework\v4.0.30319\aspnet_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.NET\Framework64\v4.0.30319\aspnet_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>
Я пробовал общаться с различными пулами приложений.
Я также устал от всего, что упоминалось во всех этих вопросах:
Ничто из этого не решило мою проблему, есть ли что-нибудь еще, что я не пробовал?
Мы закончили работу с Microsoft с этим, они просмотрели его в течение нескольких недель, прежде чем возвращаться, говоря, что невозможно запустить WebDAV и WebAPI на том же сайте.
Они попытаются решить эту проблему в будущей версии IIS.
@jblaske имеет хороший ответ.
Если вы хотите временно удалить его, возможно, эта статья - лучшее решение.
Если вы хотите удалить обработчик все вместе, выполните следующие действия.
Это мой оригинальный пост.
У вас может быть проблема с опечатками в объявлении обработчиков. Блог Томаса Марквардта
5.0 Устранение неполадок
Если вы получили ошибку, аналогичную приведенной ниже, раздел, вероятно, недействителен.
Ошибка HTTP 500.21 - Внутренний обработчик ошибок сервера "имеет плохой модуль" ManagedPipelineHandler "в своем списке модулей. Вы, вероятно, имеют сопоставление обработчика, у которого нет правильного предварительного условия. IIS не прощает в отношении опечаток, а предварительные условия деликатный случай. Текст должен быть preCondition =" integratedMode "или Precondition =" classicMode".
Кроме того, еще одно предложение из комментариев по этой статье:
Эндрю Джонсон 25 янв 2011 3:20 утра #:
Я обнаружил, что я также могу получить "Обработчик плохой модуль ManagedPipelineHandler в своем списке модулей", если обработчик имеет не requireAccess = "None". Для меня изменение этого на requireAccess = "Чтение" ошибка сделана.
Этот комментарий может применяться к вашему делу, поскольку я вижу, что в applicationHost.config запись для обработчиков WebDav (обратите внимание на requredAccess="None"
):
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />