Метод 405 не разрешен в NuGet Push

Мой сервер NuGet выдает ошибку 405 Not Allowed, когда я пытаюсь сделать push. По крайней мере, так говорит консоль NuGet:

Failed to process request. 'Method Not Allowed'.
The remote server returned an error: (405) Method Not Allowed..

Но когда я смотрю на фактический ответ HTTP с помощью Fiddler, проблема кажется совершенно другой:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">The URL representing the root of the service only supports GET requests.</message>
</error>

Любые идеи о том, что может происходить?

Спасибо!


person tucaz    schedule 08.05.2013    source источник
comment
Если вы попадаете сюда и изучаете эту проблему, убедитесь, что вы делаете то же, что и OP, и проверяете ответ HTTP, не все 405 одинаковы, и NuGet не дает вам полной информации.   -  person Liam    schedule 07.12.2017


Ответы (7)


В дополнение к использованию nuget push -Source http://nugetserver.com я сделал это:

<!--Add the following to the beginning of <system.webServer><modules>:-->
<remove name="WebDAVModule" />
<!--Add the following to the beginning of <system.webServer><handlers>:-->
<remove name="WebDAV" />

Источник: проблема Nuget № 1789.

person Kevin Smyth    schedule 06.08.2013
comment
Также убедитесь, что у пользователя IIS есть права на запись в папку Packages. - person juanagui; 07.08.2013
comment
В качестве альтернативы изменению web.config вы можете удалить WebDAVModule в IIS, на уровне сервера, на уровне сайта или даже на уровне приложения. В диспетчере IIS щелкните сервер в дереве (или сайт), затем откройте «Модули» (в IIS), найдите WebDAVModule в нижней части списка и удалите его. - person biscuit314; 03.12.2014
comment
это также помогло мне. Спасибо! - person DolceVita; 31.05.2016

После нескольких часов работы над проблемой я смог найти проблему.

Когда вы перечисляете пакеты на сервере NuGet, вы указываете на http://nugetserver.com/nuget. . Однако, когда вы пытаетесь ОТПРАВИТЬ или УДАЛИТЬ пакет, вам нужно указать на http://nugetserver.com без nuget по пути.

Что происходит, так это то, что NuGet.exe добавляет /api/v2/package к URL-адресу, превращая его в http://nugetserver.com/api/v2/package

Я думаю, что это далеко не оптимально, потому что это заставляет вас добавлять два разных источника в ваш nuget.exe.config: один для получения/списка, а другой для отправки/удаления пакетов.

person tucaz    schedule 09.05.2013
comment
Я размещаю канал на своем локальном сервере разработки. Если я просто использую URL-адрес без /nuget, он выдает ошибку: 404 (Not Found). Я сделал все, чтобы удалить webdev, добавить разрешение и т. д., но все равно выдает ошибку. - person aman; 24.01.2018
comment
Это изменилось? Я только что обновил старый сервер NuGet, и теперь он терпит неудачу, если дополнительный /nuget не добавляется к источнику push. (До обновления дополнительные /nuget не могли быть в источнике push.) - person Peter; 05.02.2018

У меня была та же ошибка — в моем случае моя переменная среды NuGet указывала на старую версию NuGet v2, и я пытался нажать на фид v3.

Повторное указание моей переменной среды на v3 NuGet.exe исправило это.

Глупая ошибка, но, надеюсь, это может сэкономить кому-то время.

person booler    schedule 08.02.2016

решение для меня - запуск локального IIS на компьютере с Win 8.1 -
заключалось в том, чтобы включить «проверку подлинности Windows» и «олицетворение ASP.NET»

person oakman    schedule 22.04.2015

Исправление для меня было в IIS. Я отключил аутентификацию Windows и включил анонимную аутентификацию.

Я нажимал на свой собственный сервер nuget.

person theUser    schedule 02.02.2015

У меня версия 3.1.2. После борьбы с этой проблемой некоторое время, следующее сделало это для меня:

  • Дайте права на запись в папку Packages на сервере
  • Поскольку я удалил предыдущие пакеты в папке «Пакеты», мне также пришлось удалить файл «*.cache.bin» в папке «Пакеты».
  • Запустил команду как «nuget.exe push {файл пакета} {apikey} -Source {ipaddress:port}/nuget». Обратите внимание на «/nuget» в конце.
person Edmund P Charumbira    schedule 27.12.2018

Решение для меня состояло в том, чтобы использовать последнюю версию Nuget.exe [3.5.0], по какой-то странной причине у меня был старый NuGet.exe (2.8.5 [версия 2017 года]), который не работал с ошибкой 405. Надеюсь, это поможет кому-то.

person Mahesh Nayak    schedule 17.04.2020