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" в конце.