«Метод 405 не разрешен» в IIS7.5 для метода «PUT» - PullRequest
98 голосов
/ 27 мая 2011

Я использую WebClient тип для загрузки * .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.Я надеюсь, что кто-то может пролить свет на это для меня.

Ответы [ 18 ]

2 голосов
/ 05 апреля 2016

У меня была эта проблема, но проблема не была связана с WebDAV.В моем случае клиент отправлял сообщение POST по адресу www.myServer.com/api/chart.Этот вызов должен обрабатываться «ExtensionlessUrlHanlder-Integrated-4.0», однако каким-то образом локальная файловая структура была создана в каталоге моего сервера «... \ Server \ api \ chart \».Это означало, что вместо этого вызывался обработчик «StaticFile».Удаление этих локальных файлов окончательно решило проблему.

2 голосов
/ 01 августа 2014

Для меня эта ошибка не исчезнет и не разрешит методы PUT, что бы я ни делал ... удалил webdav, поместил конфигурацию в web.config для удаления webdav из обработчиков и модулей и установил PUT как разрешенный глагол в запросе фильтры на iis .. и убедитесь, что сопоставления обработчика iis, обрабатывающие запрос, настроили PUT ..

Моя проблема в конечном итоге была связана с неправильной установкой расширений ASP.NET 4.5. Удалено все, что связано с asp.net, из ролей и функций сервера. перезапущен. прочитал роли и перезапустил. все работало с вышеуказанным конфигом.

--- Нижеследующее заставит PUT быть принятым, но отправит его не тому обработчику. - игнорировать ниже

наконец, добавление глагола PUT в качестве разрешенного глагола в отображении обработчика TRACE в iis сработало ... поскольку я включил ошибочную трассировку ошибок, и этот глагол не разрешал глагол.

в прошлый раз у меня была такая же проблема на IIS другого сервера, это было связано с отсутствием символа '/' в конце URL, поскольку он использовал обработчик по умолчанию без использования документа по умолчанию, вероятно, и теперь я понимаю, что .. поэтому проверьте сопоставления обработчиков IIS, если больше ничего не помогает.

1 голос
/ 25 июня 2018

Для Windows Server 2012 -> Перейти к диспетчеру сервера -> Удалить роли и компоненты -> Роли сервера -> Веб-сервер (IIS) -> Веб-сервер -> Общие функции HTTP -> Снять флажок Публикация в WebDAV и удалить его -> Перезагрузитьсервер.

1 голос
/ 14 марта 2018

Еще один совет от меня. Я использовал PHP + IIS, и в отображениях обработчиков для PHP не было глагола PUT.

Перейдите в IIS Manager-> Ваш сайт-> Сопоставления обработчиков-> PHPxx_via_FastCGI-> Запросить ограничения-> Глаголы, затем добавьте PUT.

Вот и все!

0 голосов
/ 24 января 2019

Вот что сработало для меня:

Откройте IIS и нажмите на свой сайт.

1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.

0 голосов
/ 31 мая 2018

Чтобы вообще запретить включение WebDav, удалите следующую запись из ApplicationHost.config: <add name="WebDAVModule" />

Запись находится в разделе модулей.

Точное местоположение конфига: C:\Windows\System32\inetsrv\config\applicationHost.config

0 голосов
/ 07 мая 2016

В моем случае я переместил Web Deploy на другой порт, который также был портом IIS (не 80).Сначала я этого не понимал, но, несмотря на то, что не было ошибок, запущенных на одном и том же порте, похоже, что Web Deploy скорее всего сначала отвечал, а не IIS, по какой-то причине, вызывая эту ошибку.Я только что перенес привязку IIS к другому порту, и все хорошо.;)

0 голосов
/ 01 августа 2015

Если пул приложений IIS работает в классическом режиме, убедитесь, что в вашем файле web.config

<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />

    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
имеется следующее
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...