30

当我尝试推送时,我的 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>

关于可能发生的事情有什么想法吗?

谢谢!

4

8 回答 8

54

在解决这个问题几个小时后,我能够找到问题所在。

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

发生的情况是 NuGet.exe 将/api/v2/package附加到 URL 将其转换为http://nugetserver.com/api/v2/package

我认为这远非最佳,因为它使您向 nuget.exe.config 添加两个不同的源:一个用于获取/列表,另一个用于推送/删除包。

于 2013-05-09T02:06:47.107 回答
54

除了使用之外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 问题 #1789

于 2013-08-06T21:00:34.060 回答
4

我遇到了同样的错误——在我的例子中,我的 NuGet 环境变量指向旧的 v2 版本的 NuGet,而我试图推送到 v3 提要。

将我的环境变量重新指向 v3 NuGet.exe 修复了它。

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

于 2016-02-08T18:00:02.610 回答
1

我的解决方案 - 在 Win 8.1 计算机上运行本地 IIS -
是启用“Windows 身份验证”和“ASP.NET 模拟”

于 2015-04-22T19:26:25.093 回答
0

对我来说,解决方法是在 IIS 中。我禁用了 Windows 身份验证并启用了匿名身份验证。

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

于 2015-02-02T10:24:08.877 回答
0

如果您有 IIS 8.0,WebDAV 发布方法不允许 nuget Push。从 IIS 卸载它,一切正常 WebDAV 卸载

于 2021-10-07T11:06:38.717 回答
0

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

于 2020-04-17T10:20:49.790 回答
0

我正在运行版本 3.1.2。在与这个问题斗争了一段时间后,以下为我做了:

  • 授予服务器上 Packages 文件夹的写入权限
  • 因为我已经删除了 Packages 文件夹中以前的包,所以我还必须删除 Packages 文件夹中的 '*.cache.bin' 文件。
  • 运行命令为“nuget.exe push {package file} {apikey} -Source {ipaddress:port}/nuget” 注意末尾的“/nuget”。
于 2018-12-27T16:49:08.180 回答