Я использую WebClient
type для загрузки файлов * .cab на свой сервер. На стороне сервера я зарегистрировал обработчик HTTP для файла * .cab с помощью метода PUT, как показано ниже:
<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
Но я всегда получаю ошибку «405 метод не разрешен». В ответе говорится, что допустимые методы следующие:
Headers = {Allow: GET, HEAD, OPTIONS, TRACE
Content-Length: 1293
Content-Type: text/html
Date: Fri, 27 May 2011 02:08:18 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET}
Даже если я явно разрешаю метод PUT в фильтрации запросов IIS для моего веб-приложения, та же ошибка все равно возникает.
Я подозреваю, что это проблема, связанная с IIS. Я надеюсь, что кто-нибудь сможет пролить свет на это для меня.
Я включил отслеживание неудачных запросов и получил следующую информацию:
Итак, я удалил WebDAVModule из своего IIS, теперь все в порядке ~
Функция трассировки IIS очень полезна.
источник
Application_BeginRequest
методе, как указано в этом ответе stackoverflow.com/a/14631068/827168 . Но ваш ответ лучше, чем все остальные, потому что он помогает обнаружить проблему вместо применения какого-то случайного патча :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.У меня была эта проблема с WebDAV при размещении проекта MVC4 WebApi. Я обошел это, добавив эту строку в web.config:
Как объясняется здесь: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
источник
Взято отсюда, и это сработало для меня:
1. Перейдите в диспетчер IIS.
2. Щелкните свое приложение.
3. Перейдите в «Сопоставления обработчиков».
4. В списке функций дважды щелкните «WebDAV».
5.Щелкните «Запросить ограничения».
6. Во вкладке «Глаголы» выберите «Все глаголы».
7. Нажмите ОК.
источник
Я попробовал большинство ответов, и, к сожалению, ни один из них не сработал полностью.
Вот что у меня сработало. Есть 3 вещи, которые нужно сделать с сайтом, для которого вы хотите PUT (выберите сайт):
Откройте,
WebDav Authoring Rules
а затем выберитеDisable WebDAV
опцию, присутствующую на правой панели.Выберите
Modules
, найдитеWebDAV Module
и удалите.Выберите
HandlerMapping
, найдитеWebDAVHandler
и удалите.Перезагрузите IIS.
источник
PUT
начал работать.Достаточно удалить WebDAV-модуль. Просто измените свой Web.config:
источник
Лучше всего просто удалить неиспользуемую функцию WebDAV. Перейдите в « Программы и компоненты» => Включите или отключите функции Windows и отключите публикацию WebDAV в разделе
Internet Information Services => World Wide Web Services => Общие функции HTTP
источник
По какой-то причине пометки WebDAVModule как «удалить» в моем web.config было недостаточно для решения проблемы в моем случае.
Я нашел другой подход , который сделал решить эту проблему. Если вы находитесь в одной лодке, попробуйте следующее:
Это предотвращает отклонение WebDAV глаголов, которые он не поддерживает, тем самым позволяя PUT беспрепятственно проходить через обработчик RESTful.
источник
Еще один совет от меня. Я использовал PHP + IIS, и сопоставления обработчиков для PHP не содержали глагола PUT.
Перейдите в Менеджер IIS-> Ваш сайт-> Сопоставления обработчиков-> PHPxx_via_FastCGI-> Ограничения запросов-> Глаголы, затем добавьте PUT.
Это оно!
источник
Еще один важный модуль, который необходимо перенастроить перед тем, как PUT и DELETE заработают, - это команда параметров.
Также см. Этот пост: https://stackoverflow.com/a/22018750/9376681
источник
Я использовал Angular 8 и был .NET core API. Я добавляю следующее в свой служебный файл web.config. Это разрешит мою ошибку.
источник
У меня были те же проблемы с PUT, PATCH и DELETE, но с установленным WebDav ничего не было. Наконец, мне помогло решение 1 в этой статье: http://support.microsoft.com/kb/942051
источник
Для меня эта ошибка не исчезнет и не разрешит методы PUT, что бы я ни делал ... удалил webdav, поместил конфигурацию в web.config, чтобы удалить webdav из обработчиков и модулей, и настроил PUT как разрешенный глагол в фильтрах запросов на iis .. и убедитесь, что для сопоставлений обработчиков iis, обрабатывающих запрос, настроен PUT.
Моя проблема в конечном итоге возникла из-за неправильной установки расширений ASP.NET 4.5. Удалено все, что связано с asp.net из ролей и функций сервера. перезапущен. перечитал роли и перезапустил. все работало с вышеуказанной конфигурацией.
--- Приведенное ниже приведет к тому, что PUT будет принят, но отправит его не тому обработчику. - игнорировать нижеприведенное
наконец, добавление команды PUT в качестве разрешенной команды в сопоставлении обработчика TRACE на iis сработало ... так как я включил трассировку неудачных ошибок, и эта команда не позволяла использовать команду.
в прошлый раз, когда у меня была такая же проблема на IIS другого сервера, это было из-за отсутствия '/' в конце URL-адреса, поскольку он использовал обработчик по умолчанию, вероятно, без использования документа по умолчанию, и теперь я это понимаю ... поэтому проверьте IIS сопоставления обработчиков, если ничего не помогает.
источник
У меня была эта проблема, но проблема не связана с WebDAV. В моем случае клиент отправлял POST на www.myServer.com/api/chart. Этот вызов должен обрабатываться "ExtensionlessUrlHanlder-Integrated-4.0", однако каким-то образом в моем каталоге сервера "... \ Server \ api \ chart \" была создана локальная файловая структура. Это означало, что вместо этого был вызван обработчик "StaticFile". Наконец, удаление этих локальных файлов решило проблему.
источник
Вот что у меня сработало:
Откройте IIS и щелкните свой сайт.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
источник
Для Windows server 2012 -> Перейдите в Диспетчер серверов -> Удалить роли и компоненты -> Роли сервера -> Веб-сервер (IIS) -> Веб-сервер -> Общие функции HTTP -> Снимите флажок «Публикация WebDAV» и удалите его -> Перезагрузите сервер.
источник
Если пул приложений IIS работает в классическом режиме, убедитесь, что в вашем web.config есть следующее:
источник
В моем случае я переместил веб-развертывание на другой порт, который также был портом IIS (не 80). Сначала я не осознавал, но, хотя и не было ошибок, запущенных на одном и том же порте, похоже, что Web Deploy по какой-то причине скорее всего отвечал первым, а не IIS, вызывая эту ошибку. Я просто переместил привязку IIS к другому порту, и все в порядке. ;)
источник
Чтобы вообще предотвратить включение WebDav, удалите следующую запись из ApplicationHost.config:
<add name="WebDAVModule" />
Запись находится в разделе модулей.
Точное расположение конфига:
C:\Windows\System32\inetsrv\config\applicationHost.config
источник
У меня была такая же проблема с RESTful API, работающим на ядре aspnet.
Я не хотел удалять WebDAV и попробовал большинство описанных выше средств. Я пытался установить глаголы = "*" как на сайте, так и на самом сервере, но безуспешно.
Уловка для меня заключалась в следующем:
Диспетчер IIS -> Сайты -> Мой сайт -> HandlerMappings -> aspNetCore -> Изменить
-> Ограничения запроса -> Доступ -> Нет (это был скрипт).
После этого все заработало, даже если я заменил исходные параметры WebDAV.
источник