Visual Studio Team Services 使用 asp.net core rc2 的未经授权的 nuget 包

Unauthorized nuget package from Visual Studio Team Services using asp.net core rc2

我无法从 Visual Studio Team Services 提要中 install/restore nuget 包 asp.net 核心 Web 应用程序 (RC2)。我收到以下信息:

error: Response status code does not indicate success: 401 (Unauthorized).

我是 运行 Visual Studio 社区 2015 更新 2 和 nuget 版本 3.4.4。我能够 install/restore 从此提要中的包用于其他项目类型。

我是否需要执行其他操作来传递 asp.net 核心 Web 应用程序的凭据?

重现步骤:

从 Team Services 包选项卡 I select "Connect to Feed" 复制 NuGet 包源 URL

在 visual studio -> 工具 -> NuGet 包管理器 -> 包管理器设置 -> 包源并添加来自 vso

的提要 url

然后从我的 ASP.NET Core Web Application (.NET Framework) 项目中右键单击引用 -> 管理 NuGet 包 -> Select 来自包源的我的提要(已列出包)-> 单击以安装

在输出中:

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

我在 VSTS 构建定义的 NuGet 还原任务中遇到了类似的问题(无身份验证)。解决方案是在项目的根目录中添加一个 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. 从 "VS\Tools\NuGet Package Manager\Package sources" 中删除 VSTS 提要资源。
  2. 从您的 VSTS 门户网站打开 "Packages" 选项卡。
  3. Select 您要连接的 Feed,然后单击 "Connect to feed" 选项。
  4. Select "Personal Access Tokens" 对话框中的方法。
  5. 在对话框中复制生成的命令。
  6. 运行 在您的计算机上以管理员身份执行 CMD。
  7. 将复制的命令粘贴到CMD。
  8. 在命令后添加“-StorePasswordInClearText”参数。
  9. 运行命令。
  10. 重启VS
  11. 安装和恢复包。

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

我已经安装了 VS Community 2019 ,昨天我决定删除 VS 2017,但在那之后,当我试图恢复公司制作的 Nuget 包时,它开始显示 的错误401 未经授权.

经过几次网络搜索后,我决定不想弄乱 VS 配置和文件,然后我意识到,因为它是 401 未授权,所以它与帐户有关,所以我所做的是:

  • 已关闭 VS2019
  • 转到 windows 管理凭据并删除所有与我的包相关的凭据
  • 重新打开 VS 2019 并为我的解决方案恢复了 Nuget 包。 他们要求我提供凭据,进行设置,从这里开始一切顺利。

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

对我来说,问题是由于在连接到私有本地 Azure Artifacts NuGet 源时不正确的凭据(未指定域)造成的,这并没有立即显现出来。

使用 Visual Studio 2019,打开项目的 NuGet 包管理器。如果 'Browse' 选项卡首先显示并且包源是私有 NuGet 提要,则似乎没有问题,因为它最初列出了所有包。但是,切换到 'Installed' 选项卡会弹出登录对话框。

如果我输入我的用户名和密码 没有 域(所以 用户名 而不是 domain/username ),它似乎接受了这一点,但是除了安装的版本之外,没有为我安装的软件包列出其他版本。如果我转到 'Browse' 选项卡,则会看到以下错误:

当我点击 'Show errors in output' 时,我看到以下内容:

Failed to retrieve metadata from source 'https://[domain]/[Collection]/_packaging/[GUID]/nuget/v3/query2/?q=&skip=0&take=26&prerelease=true&semVerLevel=2.0.0'. Response status code does not indicate success: 401 (Unauthorized).

为了解决这个问题,我在凭据管理器中关闭了 Visual Studio,然后删除了与 Azure DevOps 服务器相关的所有凭据(例如,[domain]VSCredentials_[domain])。我注意到这些用户名显示了错误的域 - 它显示了 Azure DevOps 服务器域而不是 Active Directory 域。

然后我重新打开 Visual Studio,再次打开 NuGet 包管理器,这次(在 'Installed' 选项卡上)输入我的凭据,包括域 (domain/username).这解决了问题并允许我连接到 Azure Artifact NuGet 源。

在尝试上述任何操作之前,请尝试重新启动计算机。

就我而言,我遵循了这些步骤

  1. 使用相关凭据创建个人访问令牌
  2. 下载nuget.exe(nuget cli)
  3. 使用windows 运行命令打开cmd,然后 cd C:\Downloads(下载cli的地方),输入 “nuget.exe”并输入
  4. 执行 --> nuget.exe sources Add -Name "MyFeedName" -Source "https://myfeedurl" -username 用户名 -password MyAccessToken
  5. 在visual studio工具->命令行->开发者命令提示符
  6. dotnet 恢复
  1. 转到“管理 Nuget 包”
  2. 点击右上角的“设置”
  3. 取消勾选“包”

就我而言,我使用的是 azure dev ops 提要。更新 visual studio 2022 后,我开始收到此消息“响应状态代码不表示成功:401(未授权)”。

我遵循并尝试了这里的大部分解决方案。但对我有用的是

  • 转到:文件 -> 帐户设置
  • 点击“唱出来”
  • 然后转到 nuget 管理器并单击刷新按钮
  • 这将向您显示 azure dev ops 登录名 window,您可以在其中登录您的帐户

这对我有用,(你的里程数可能会有所不同)只是希望它能帮助其他人并挽救一些宝贵的后退头发。