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>

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

Спасибо!

8 ответов

Решение

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

Когда вы перечисляете пакеты на сервере NuGet, вы указываете на http://nugetserver.com/nuget. Однако, когда вы пытаетесь нажать или удалить пакет, вам нужно указать на http://nugetserver.com/ без папки nuget в пути.

В результате NuGet.exe добавляет /api/v2/package к URL-адресу, превращая его в http://nugetserver.com/api / v2 / package

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

В дополнение к использованию 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

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

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

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

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

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

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

Я толкал на свой собственный сервер Nuget.

Если у вас IIS 8.0, метод публикации WebDAV не позволяет использовать nuget Push. Удалите его из IIS, и все будет работать. Удаление WebDAV

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

  • Предоставьте права на запись в папку "Пакеты" на сервере.
  • Поскольку я удалил предыдущие пакеты в папке "Пакеты", мне также пришлось удалить файл "*.cache.bin" в папке "Пакеты".
  • Запустил команду как "nuget.exe push {package file} {apikey} -Source {ipaddress:port}/nuget" Обратите внимание на "/nuget" в конце.
Другие вопросы по тегам