来自Visual Studio Team Services的未经授权的NuGet包在使用ASP.NET Core RC2时的问题

41

我无法在ASP.NET Core Web应用程序(RC2)中从Visual Studio Team Services feed安装/恢复NuGet包。我收到以下错误:

错误:响应状态代码不表示成功:401(未经授权)。

我正在运行Visual Studio Community 2015 Update 2和NuGet版本3.4.4。我能够在其他项目类型中从该Feed安装/恢复包。

我需要为ASP.NET Core Web应用程序传递我的凭据吗?

重现步骤:

从团队服务包选项卡中,选择“连接到Feed”,并复制NuGet软件包源URL

在Visual Studio -> 工具 -> NuGet软件包管理器 -> 软件包管理器设置 -> 软件包源,并添加来自VSO的Feed URL

然后从我的ASP.NET Core Web应用程序(.NET Framework)项目中,右键单击引用 -> 管理NuGet软件包 -> 从软件包源选择我的Feed(软件包已列出)-> 单击以安装

在输出中:

Installing NuGet package xxxxx 
Successfully installed xxxxx to WebApplication1
========== Finished ==========

然后它会尝试还原包,此时我收到以下提示:

error: Response status code does not indicate success: 401 (Unauthorized).
error: Failed to retrieve information from remote source

在 Web 项目引用中 - 包含警告图标的包 - NU1001:无法解析依赖项 xxxxx。


1
你是否从VS右上角登录了你的VSTS帐户?你能分享一下重现此问题的步骤吗? - Eddie Chen - MSFT
@Eddie-MSFT 我已在Visual Studio的右上方登录。我能够在同一Visual Studio实例中从相同的VSO feed向框架类库项目添加包。 - HPaxton
2
我在Visual Studio 2017中遇到了同样的问题。重新启动Visual Studio解决了我的问题。 - keft
@keft 我也是! - Tom Troughton
1
登出并使用我的账户在Visual Studio中重新登录解决了这个问题。 - Heinzlmaen
显示剩余3条评论
11个回答

39

我知道这不完全是同一个问题,但人们可能会像我一样同时遇到这个问题。

我安装了VS Community 2019,并在昨天决定删除VS 2017,但之后当我尝试还原公司的Nuget Packages时,它开始显示401 Unauthorized的错误。

经过一些网络搜索,我决定不想去修改VS的配置和文件,然后我意识到,既然是401未授权错误,那么与帐户有关,所以我做的是:

  • 关闭VS2019
  • 进入Windows管理凭据并删除所有与我的软件包相关的凭据
  • 重新打开VS 2019并为我的解决方案还原Nuget Packages。
    然后它要求我输入凭据,我设置好了一切,从这里开始一切都进行得很顺利。

这是我删除并重新创建的两个帐户:

enter image description here


这对我有用,谢谢!我只是删除了任何引用我公司的NuGet feed的凭据。 - Neo
这对我也起作用了。我只是更新了“通用凭据”下“VSCredentials_[whatever]”凭据的密码,重新启动了VS 2019,然后它就开始工作了。 - Chuck

33
在我的情况下,我正在使用 Azure Dev Ops Feed。在更新 Visual Studio 2022 后,我开始收到此消息:“响应状态代码不表示成功:401 (未经授权)。” 我尝试了这里的大多数解决方案,但对我有效的是:
- 转到:文件 -> 帐户设置 - 单击“注销” - 然后转到 NuGet 管理器并单击刷新按钮 - 这将显示 Azure Dev Ops 登录窗口,在其中登录您的帐户
这对我有用(您的结果可能会有所不同),只是希望它能帮助其他人并节省一些宝贵的时间。

1
没想到,但确实有效。谢谢。在这里留下评论,让人们可以尝试并节省时间。 - Vivek Verma
对我也起作用了。但是,我打开了两个 Visual Studio 实例,并且必须在其中一个实例中执行这些步骤,该实例中有我想要构建 NuGet 包的项目。 - mamen
这对我也起作用了。我仍然能够在VS 2019中使用相同的帐户连接到相同的Azure DevOps feed进行身份验证,但无法在VS 2022中进行。这些步骤解决了VS 2022中的问题,只是我不得不删除帐户而不仅仅是注销。 - thomb1602
太棒了!这对我也起作用了。我所做的就是从Git上拉取最新的代码,然后自己解决了问题。感谢您的帮助! - Adrian Garcia

18

我能够在我的设备上重现你的问题,以下是我用来恢复软件包的解决方法:

  1. 从“VS\Tools\NuGet Package Manager\Package sources”中删除VSTS feed资源。
  2. 从你的VSTS Web门户打开“Packages”选项卡。
  3. 选择要连接的feed并点击“Connect to Feed”选项。
  4. 在对话框中选择“Personal Access Tokens”方法。
  5. 复制对话框中生成的命令。
  6. 以管理员身份在你的计算机上运行CMD。
  7. 将复制的命令粘贴到CMD中。
  8. 在命令之后添加"-StorePasswordInClearText"参数。
  9. 运行该命令。
  10. 重新启动VS。
  11. 安装和恢复软件包。

我曾经遇到同样的问题,所以我按照您使用PAT的方式去做。现在,至少我得到了一个不同的错误,如下所示。“https://****.pkgs.visualstudio.com/_packaging/myfeed/nuget/v3/index.json”的源密码解密失败,此平台不支持。可以使用明文密码。 - SamDevx
@SamDevx 请检查第8步。如果没有执行第8步,我也会收到该错误消息。 - Eddie Chen - MSFT
抱歉我的错,现在它可以工作了。您的解决方法非常好!关键是使用您建议的PAT,但使用-StorePasswordInClearText开关进行修改。我终于可以继续进行项目了。不过在某个时候,他们(NuGet 或 .NET Core 团队)需要修复这个可怕的问题。 - SamDevx
完美运行。好东西!谢谢。 - HPaxton
2
我们已经将此解决方案添加到 VSTS NuGet feeds 的文档中:https://www.visualstudio.com/en-us/docs/package/get-started/nuget/auth#dotnet-core - Alex Mullans

4
对我而言,问题是由于连接到私有本地Azure Artifacts NuGet feed时凭据不正确(未指定域)引起的,这一点并不明显。
使用Visual Studio 2019打开项目的NuGet Package Manager。如果“浏览”选项卡首先显示且软件包源为私有NuGet feed,则似乎没有问题,因为它最初列出所有软件包。但是,切换到“已安装”选项卡会弹出登录对话框。
如果我输入我的用户名和密码带域(因此是username而不是domain/username),它似乎会接受此设置,但然后除已安装版本外,我的安装软件包将不列出其他任何版本。 如果我转到“浏览”选项卡,然后我会看到以下错误:
https://istack.dev59.com/86dHz.webp 当我单击“在输出中显示错误”时,我会看到以下信息:
“从源'https://[domain]/[Collection]/_packaging/[GUID]/nuget/v3/query2/?q=&skip=0&take=26&prerelease=true&semVerLevel=2.0.0'检索元数据失败。响应状态代码未指示成功:401(未授权)”。
要解决此问题,我需要在凭据管理器中关闭Visual Studio,然后删除与Azure DevOps服务器相关的任何凭据(例如,[domain]VSCredentials_[domain])。 我注意到这些的用户名显示错误的域 - 它显示Azure DevOps服务器域而不是活动目录域。
然后我重新打开Visual Studio,再次打开NuGet Package Manager,并在“已安装”选项卡上输入包括域的凭据(domain/username)。这将解决问题并允许我连接到Azure Artifact NuGet feed。

3
当您更改个人资料密码时,会出现此问题。只需注销,然后从右上角(在您的个人资料图片 -> 账户设置)重新登录,您的问题将得到解决。

1

在尝试上述方法之前,请尝试重新启动电脑。


1

在我的情况下,我按照以下步骤进行:

  1. 使用相关凭据创建个人访问令牌
  2. 下载nuget.exe(nuget cli)
  3. 使用Windows运行命令打开cmd,然后cd C:\Downloads(cli下载位置),输入“nuget.exe”并按Enter
  4. 执行-->nuget.exe sources Add -Name“ MyFeedName”-Source“ https://myfeedurl”-username用户名-password MyAccessToken
  5. 在Visual Studio工具->命令行->开发人员命令提示符中
  6. dotnet restore

1
  1. 进入“管理Nuget包”
  2. 从右上角点击“设置”
  3. 取消选中“包”

Screenshot


这对我有用,谢谢。注销并重新登录对我没有起作用。 - Hilal
我认为只有在您不需要来自未选中源的软件包时,这才能起作用。 - Caleb Seadon

1
在VSTS构建定义的NuGet Restore任务中,我遇到了类似的问题(没有身份验证)。解决方案是在项目根目录中添加一个NuGet.config文件,并引用官方和自定义源。也许这也有助于您的核心项目。
    <?xml version="1.0" encoding="utf-8"?>
<configuration>

  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="RmlrTools" value="https://<MyProjectName>.pkgs.visualstudio.com/DefaultCollection/_packaging/<MyFeedName>/nuget/v3/index.json" />
  </packageSources>
  <!-- used to store credentials -->
  <packageSourceCredentials />
  <!-- Used to specify which one of the sources are active -->
  <activePackageSource>
    <!-- this tells only one given source is active -->
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <!-- this tells that all of them are active -->
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <!-- Used to disable package sources  -->
  <disabledPackageSources />
  <!-- 
  Used to specify default API key associated with sources. 
  See: NuGet.exe help setApiKey
  See: NuGet.exe help push
  See: NuGet.exe help mirror
  -->
  <!--<apikeys>
    <add key="http://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
  </apikeys>-->
</configuration>

1
在我的情况下,我使用了Azure Devops私有feed,NuGet包恢复在Visual Studio和Nuget CLI中工作,但在Rider和dotnet restore命令中无法工作
解决方案是安装Azure Artifacts凭据提供程序,它解决了这个问题。我只需要运行以下命令进行安装:
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }"

这是为本地开发者机器修复的补丁。若要在CI/CD上修复,请查看此问题


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