在NuGet推送中不允许使用405方法

时间:2013-05-08 22:18:44

标签: push nuget nuget-server

当我尝试推送时,我的NuGet服务器正在抛出405 Not Allowed。至少,这就是NuGet控制台所说的:

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

但是当我看到Fiddler的实际HTTP响应时,问题似乎完全不同:

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

关于可能发生的事情的任何想法?

谢谢!

7 个答案:

答案 0 :(得分:53)

除了使用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 issue #1789

答案 1 :(得分:49)

经过几个小时处理这个问题后,我找到了问题。

当您在NuGet服务器中列出包时,您指向http://nugetserver.com/ nuget 。但是,当您尝试推送或删除某个包时,您需要指向http://nugetserver.com,而不要在路径中包含 nuget 文件夹。

NuGet.exe会将 / api / v2 / package 附加到网址,将其转换为http://nugetserver.com/ api / v2 / package

我认为这远非最佳,因为它会让你为nuget.exe.config添加两个不同的源:一个用于get / list,另一个用于推送/删除包。

答案 2 :(得分:2)

我有同样的错误 - 在我的情况下,我的NuGet环境变量指向一个旧的v2版本的NuGet,我试图推送到v3提要。

将我的环境变量重新定位到v3 NuGet.exe修复它。

愚蠢的错误,但希望这可能会节省一些时间。

答案 3 :(得分:1)

我的解决方案 - 在Win 8.1计算机上运行本地IIS -
是启用&#34; Windows身份验证&#34;和#34; ASP.NET Impersonation&#34;

答案 4 :(得分:0)

我的修复是在IIS中。 我禁用了Windows身份验证并启用了匿名身份验证。

我正在推动自己的nuget服务器。

答案 5 :(得分:0)

我正在运行版本3.1.2。在解决了这个问题一段时间后,以下对我做了帮助:

  • 授予对服务器上Packages文件夹的写权限
  • 因为我已经删除了Packages文件夹中的先前软件包,所以我也不得不删除了Packages文件夹中的'* .cache.bin'文件。
  • 以“ nuget.exe推送{软件包文件} {apikey}-源{ipaddress:port} / nuget”的命令运行。注意最后的“ / nuget”。

答案 6 :(得分:0)

对我来说,解决方案是使用最新的Nuget.exe [3.5.0],出于某些奇怪的原因,我有旧的NuGet.exe(2.8.5 [2017版本]),但由于405错误而失败。希望这对某人有帮助。