推送到私有 NuGet feed 时提示凭据

19
我已经使用空的Web应用程序和nuget服务器包设置了一个私有nuget feed。一切都很正常,我可以从feed中检索,并且可以使用Nuget Package Explorer发布到私有feed中。 但是我无法通过命令行发布-它提示输入凭据。我已经在Appsettings中设置了ApiKey(一个简单密码), 也尝试将ApiKey添加到推送命令中。这会提示我输入用户名,然后是密码。 我还尝试过SetApiKey命令,但得到了相同的结果。 在构建服务器上,我正在尝试相同的操作,但结果相同。

这是来自构建日志的错误消息(标识信息已被打码):

nuget pack "C:\Builds\2\OE Phase II\Common\src\WebApi\Web.Http\Bxxxxxxxs.Web.Http.csproj" -IncludeReferencedProjects -Properties Configuration=Release
  nuget SetApiKey Bxxxxxxx1 -Source http://tfs12.xxxxxxxrps.com/Nuget
  nuget push *.nupkg -s http://tfs12.xxxxxxxrps.com/Nuget/
  C:\Builds\2\OE Phase II\Common\bin\xxxxxxx.Web.Http.dll
  1 File(s) copied
  Attempting to build package from 'xxxxxxx.Web.Http.csproj'.
  Packing files from 'C:\Builds\2\OE Phase II\Common\src\WebApi\Web.Http\bin\Release'.
  Using 'xxxxxxxs.Web.Http.nuspec' for metadata.
  Found packages.config. Using packages listed as dependencies
  Successfully created package 'C:\Builds\2\OE Phase II\Common\bin\xxxxxxxs.Web.Http.1.0.0.0.nupkg'.
  The API Key 'xxxxxxx' was saved for 'http://tfs12.xxxxxxxrps.com/Nuget'.
  Pushing Bxxxxxxxrs.Data 1.0.0.0 to 'http://tfs12.xxxxxxxrps.com/Nuget/'...
  Please provide credentials for: http://tfs12.xxxxxxxrps.com/Nuget/
  Object reference not set to an instance of an object.
  UserName: Password: 
6个回答

10

为Windows Server 2012和Nuget.Server 2.8.5找到了解决方案。

  • 打开IIS管理器
  • 找到您的"Nuget.Server"应用程序
  • 右键单击并选择"编辑权限"
  • 转到"安全"选项卡

为"Everyone"组添加"写入"权限。


我刚把这个标记为答案,因为它修复了我的命令行,使其能够推送一个包。奇怪的是,包资源管理器已经停止工作,无法将其推送到服务器,而我的搜索结果又回到了最初的问题。所以现在命令行已经修复了,但是包资源管理器仍然无法正常工作。 - Noel
1
如果你想更加安全一些,只需将写入权限添加到用户而不是所有人。 - Kam
6
我使用的是Windows 7操作系统,搭配IIS 7.x服务器。我必须给以下本地用户添加“写入”权限:IUSR和IIS_IUSRS。 - Greg Burghardt
正如@GregBurghardt所建议的那样,您只需向IUSR和IIS_IUSRS用户授予写入权限即可。 - Erik Schierboom
1
您不必为整个应用程序授予写入权限,只需在存储软件包的目录中这样做即可。 - Liero
我正在使用NuGet.Server 2.11.2和IIS_IUSRS只需要在packages文件夹中进行修改,但由于某些原因,整个文件夹都需要对IUSR进行修改。 - Sacha K

1

我也遇到了这个问题,而且我知道之前它是可以工作的。结果发现我使用的是NuGet.exe 2.8.1,正在升级中。

NuGet.exe update -self 

将其升级到2.8.3,现在可以正常工作。


这就是我需要的全部。我从4.9.4更新到了5.4.0,在更新后,我的Azure AD身份验证框弹出了。之前,它只是“冻结”了。 - Michael Blackburn

1
这对我很有帮助:站点 > 认证 > 启用 Windows 认证(默认只有匿名),推送将使用您的域帐户而无需用户输入。

1
API密钥用于上传/推送软件包。看起来您启用了HTTP代理,您可以通过调用nuget.exe config命令来设置用户名和密码。
一些示例:
nuget config -Set HTTP_PROXY=http:// *。*. -Set HTTP_PROXY.USER=domain\user nuget.config HTTP_PROXY

http://docs.nuget.org/docs/reference/command-line-reference


提示框不是在请求代理凭据,而是在请求仓库凭据。 - dss539

0

您可能会发现这个SO答案很有帮助,因为它涵盖了如何在工作站和/或构建服务器上配置凭据的内容,这是通过命令行推送到需要身份验证的服务器(例如私有源)所必需的。

发布不需要API密钥。


0

另外,您使用的是 NuGet.Server 包的哪个版本?NuGet 已经发布了 2.7.2 版本。

您可以尝试一下,看看空引用异常是否仍然会出现?谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接