2013-05-08 15 views
28

Il mio server NuGet lancia un 405 Non consentito quando provo a fare una spinta. Almeno, questo è quello che dice NuGet console:405 Metodo non consentito in NuGet Push

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

Ma quando guardo la risposta effettiva HTTP con Fiddler il problema sembra essere completamente diverso:

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

Tutte le idee su quello che potrebbe essere in corso ?

Grazie!

+0

Se si arriva a questo problema e si sta verificando questo problema, assicurarsi di eseguire l'OP e verificare la risposta HTTP, non tutti gli 405 sono uguali e NuGet non fornisce tutti i dettagli. – Liam

risposta

44

Dopo alcune ore di lavoro sul problema, sono riuscito a trovare il problema.

Quando si LISTA i pacchetti nel server NuGet si punta a http://nugetserver.com/nuget. Tuttavia, quando si tenta di PUSH o DELETE di un pacchetto, è necessario puntare a http://nugetserver.com senza la cartella nuget nel percorso.

Quello che succede è che NuGet.exe append /api/v2/pacchetto all'URL trasformandolo in http://nugetserver.com/api/v2/pacchetto

Penso che questo è ben lungi dall'essere ottimale perché fa si aggiunge due fonti diverse per il tuo nuget.exe.config: una per get/list e un'altra per spingere/eliminare pacchetti.

+0

Questo è cambiato, quindi l'URL del feed "https://www.nuget.org" farà ora. –

+0

Sto ospitando il feed nel mio server di sviluppo locale. Se utilizzo l'url senza/nuget, viene generato un errore: 404 (non trovato). Ho fatto tutto dalla rimozione di webdev, aggiungendo permessi etc ma mi dà ancora errori. – aman

+0

È cambiato? Ho appena aggiornato un vecchio NuGet Server e ora fallisce, a meno che l'extra '/ nuget' sia aggiunto anche al sorgente push. (Prima dell'aggiornamento, l'extra '/ nuget' non poteva essere nella fonte di push.) – Peter

49

Oltre a utilizzare nuget push -Source http://nugetserver.com, ho fatto questo:

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

Fonte: Nuget issue #1789

+5

Assicurarsi inoltre che l'utente IIS disponga delle autorizzazioni di scrittura per la cartella Packages – juanagui

+5

+1 per # di volte in cui questa risposta specifica ha risolto il problema. –

+5

In alternativa alla modifica di web.config, è possibile rimuovere WebDAVModule in IIS, a livello di server, di sito o di app. In Gestione IIS, fare clic sul server nell'albero (o sul sito), quindi aprire Moduli (in IIS), trovare WebDAVModule nella parte inferiore dell'elenco, quindi rimuoverlo. – biscuit314

0

La correzione di me era in IIS. Ho disabilitato l'autenticazione di Windows e abilitato l'autenticazione anonima.

Stavo spingendo al mio server nuget.

1

la soluzione per me - l'esecuzione di un IIS locale su un computer di 8.1 Win -
è stato quello di consentire "l'autenticazione di Windows" e "Rappresentazione ASP.NET"

2

ho avuto lo stesso errore - nel mio caso, il mio La variabile di ambiente NuGet puntava a una vecchia versione v2 di NuGet e stavo cercando di inviare a un feed v3.

La riparazione della variabile di ambiente su NuGet.exe v3 è stata risolta.

Errore stupido, ma si spera che potrebbe salvare qualcuno un po 'di tempo.

Problemi correlati