web-dev-qa-db-fra.com

Méthode 405 non autorisée dans NuGet Push

Mon serveur NuGet lance un 405 non autorisé lorsque j'essaie de créer un push. Au moins, c’est ce que dit la console NuGet:

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

Mais quand je regarde la réponse HTTP réelle avec Fiddler, le problème semble être totalement différent:

<?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>

Des idées sur ce qui pourrait se passer?

Merci!

28
tucaz

Après quelques heures de travail sur le sujet, j'ai pu trouver le problème.

Quand vous listez les paquets sur le serveur NuGet, vous pointez sur http://nugetserver.com/ nuget . Cependant, lorsque vous essayez de pousser ou de supprimer un paquet, vous devez pointer vers http://nugetserver.com sans le dossier nuget dans le chemin.

Qu'est-ce qui se passe, c'est que NuGet.exe ajoute/api/v2/package à l'URL en le transformant en http://nugetserver.com/ api/v2/package

Je pense que c'est loin d'être optimal car cela vous oblige à ajouter deux sources différentes à votre nuget.exe.config: une pour get/list et une autre pour charger/supprimer des paquets.

47
tucaz

En plus d'utiliser nuget Push -Source http://nugetserver.com, j'ai fait ceci:

<!--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" />

Source: Nuget numéro 1789

52
Kevin Smyth

J'ai eu la même erreur - dans mon cas, ma variable d'environnement NuGet pointait vers une ancienne version v2 de NuGet et j'essayais de transmettre à un flux v3. 

Rejoint ma variable d'environnement à une v3, NuGet.exe l'a corrigée. 

Silly erreur, mais j'espère que cela pourrait sauver du temps à quelqu'un.

2
booler

la solution pour moi - exécuter un IISlocal _ sur un ordinateur Windows 8.1 -
devait activer "l'authentification Windows" et "l'emprunt d'identité ASP.NET"

1
oakman

Le correctif pour moi était dans IIS. J'ai désactivé l'authentification Windows et activé l'authentification anonyme.

Je poussais sur mon propre serveur de pépites. 

0
theUser

J'utilise la version 3.1.2. Après avoir lutté avec ce problème pendant un moment, les éléments suivants l'ont fait pour moi:

  • Accorder des autorisations en écriture au dossier Packages sur le serveur
  • Comme j'avais supprimé les packages précédents dans le dossier Packages, j'ai également dû supprimer le fichier '* .cache.bin' dans le dossier Packages.
  • Exécutez la commande en tant que "nuget.exe Push {fichier de package} {apikey} -Source {ipaddress: port}/nuget" Notez le "/ nuget" à la fin. 
0
Edmund P Charumbira