pushnugetnuget-server

405 Method Not Allowed in NuGet Push


My NuGet server is throwing a 405 Not Allowed when I try to make a push. At least, thats what NuGet console says:

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

But when I look at the actual HTTP response with Fiddler the problem seems to be totally different:

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

Any ideas on what might be going on?

Thanks!


Solution

  • After a few hours working on the issue I was able to find the problem.

    When you LIST packages in NuGet server you point to http://nugetserver.com/nuget. However when you are trying to PUSH or DELETE a package you need to point to http://nugetserver.com without the nuget folder in the path.

    What happens is that NuGet.exe append /api/v2/package to the URL turning it into http://nugetserver.com/api/v2/package

    I think this is far from optimal because it makes you add two different sources to your nuget.exe.config: one for the get/list and another for pushing/deleting packages.