2013-05-08 12 views
28

Mein NuGet-Server wirft eine 405 nicht erlaubt, wenn ich versuche, einen Push zu machen. Zumindest das ist, was NuGet Konsole sagt:405 Methode nicht zulässig in NuGet Push

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

Aber wenn ich bei der aktuellen HTTP-Antwort mit Fiddler Blick scheint das Problem völlig anders zu sein:

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

Alle Ideen, was könnte los ?

Danke!

+0

Wenn Sie hierher kommen und dieses Problem betrachten, stellen Sie sicher, dass Sie tun, wie das OP hat und überprüfen Sie die HTTP-Antwort, nicht alle 405s sind die gleichen und NuGet gibt Ihnen nicht die vollständigen Details. – Liam

Antwort

44

Nach ein paar Stunden Arbeit an dem Problem konnte ich das Problem finden.

Wenn Sie Pakete in NuGet Server LIST zeigen Sie auf http://nugetserver.com/nuget. Wenn Sie jedoch versuchen, ein Paket zu PUSH oder DELETE, müssen Sie auf http://nugetserver.com ohne den Ordner nugget im Pfad verweisen.

Was passiert ist, dass NuGet.exe anhängen /api/v2/Paket an die URL es in http://nugetserver.com/api/v2/Paket Drehen

Ich denke, das bei weitem nicht optimal ist, weil es macht Sie hinzufügen zwei verschiedene Quellen für Ihre nuget.exe.config: eine für die Get/List und eine weitere für das Verschieben/Löschen von Paketen.

+0

Dies hat sich geändert, daher wird die Feed-URL "https://www.nuget.org" jetzt ausgeführt. –

+0

Ich hasse den Feed in meinem lokalen Dev-Server. Wenn ich nur die URL ohne/nuget verwende, wird der Fehler 404 (Not Found) ausgegeben. Ich habe alles vom Entfernen von webdev, dem Hinzufügen der Erlaubnis usw. getan, aber gibt mir immer noch Fehler. – aman

+0

Hat sich das geändert? Ich habe gerade einen alten NuGet Server aktualisiert und jetzt schlägt es fehl, es sei denn, das zusätzliche '/ nuget' wird der Push-Quelle hinzugefügt. (Vor dem Update durfte das zusätzliche '/ nuget' nicht in der Push-Quelle sein.) – Peter

49

Neben nuget push -Source http://nugetserver.com verwenden, habe ich dies:

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

Quelle: Nuget issue #1789

+5

Stellen Sie außerdem sicher, dass der IIS-Benutzer Schreibberechtigungen für den Packages-Ordner – juanagui

+5

+1 für Anzahl der Male hat, die diese spezifische Antwort das Problem behebt. –

+5

Als Alternative zum Ändern der Datei web.config können Sie WebDAVModule in IIS auf Server-, Site- oder sogar App-Ebene entfernen. Klicken Sie im IIS-Manager auf den Server in der Struktur (oder der Site), öffnen Sie Module (unter IIS), suchen Sie WebDAVModule am Ende der Liste, und entfernen Sie es anschließend. – biscuit314

0

Das Update für mich in IIS war. Ich habe die Windows-Authentifizierung deaktiviert und die anonyme Authentifizierung aktiviert.

Ich drängte auf meinen eigenen nugget Server.

1

die Lösung für mich - eine lokale IIS auf einem Win 8.1-Computer ausgeführt -
war zu ermöglichen „Windows-Authentifizierung“ und „ASP.NET-Identitätswechsel“

2

ich den gleichen Fehler hatte - in meinem Fall, mein Die NuGet-Umgebungsvariable zeigte auf eine alte v2-Version von NuGet und ich versuchte, zu einem v3-Feed zu wechseln.

Reproining meine Umgebungsvariable auf eine v3 NuGet.exe behoben.

Dummer Fehler, aber hoffentlich könnte das jemand Zeit sparen.