我按照这些说明在我们的 Intranet 上托管了 NuGet 服务器(版本 2.2.2)。就列出包并在 VS 2012 中检索它们而言,它非常有用。但是当我使用 Nuget 包资源管理器创建包并尝试发布它时,我会收到一个提示输入凭据的 Windows 安全对话框。无论我输入什么凭据,它都会不断重新提示我输入用户名和密码,并返回 401 身份验证错误。为什么 NuGet 服务器提示我输入 Windows 凭据,我该如何摆脱它?它仅用于发布而不是其他任何东西。
4 回答
除了 Packages 文件夹的权限配置之外,还有一件事。在我的情况下,我必须使用类似的 URL
http://<server>/<nuget_virtual_dir>/api/v2/package/
用于推动。在我的情况下,这是唯一的解决方案。
当您使用 NuGet 推送时,您需要将 /api/v2/package 放在 NuGet 服务器 URL 之后(例如http://myhost/myNuGetServer/api/v2/package)
如果您使用 NuGet 用户界面(NuGet 包资源管理器),您只需要放置服务器 url 而不是 URL(例如http://myhost/myNuGetServer/)
还要注意 Web.config 中的 apikey 配置并在 NuGet 推送中使用它!
我认为找到了解决方案(至少解决了我的问题):
我放弃了 Nuget 问题,并专注于 ISS 401 错误。然后,我将权限授予用户“IIS AppPool\DefaultAppPool”到应用程序的根目录(或使用该应用程序的 AppPool,在我的情况下为“ASP.NET v4.0”)。然后它就像魅力一样工作!
更多信息(以及关于问题的良好解释):IIS7 401 错误中的 ApplicationPoolIdentity
您可能会发现此 SO 答案很有帮助,因为它涵盖了如何在发布工作站(或构建服务器,但在任何一种情况下都是准确的信息)上配置凭据。