【问题标题】:Unauthorized nuget package from Visual Studio Team Services using asp.net core rc2使用 asp.net core rc2 来自 Visual Studio Team Services 的未经授权的 nuget 包
【发布时间】:2016-10-23 17:36:15
【问题描述】:

我无法从 asp.net 核心 Web 应用程序 (RC2) 中的 Visual Studio Team Services 源安装/恢复 nuget 包。我收到以下信息:

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

我正在运行 Visual Studio Community 2015 Update 2 和 nuget 版本 3.4.4。我可以在其他项目类型中安装/恢复此提要中的包。

我需要做其他事情来传递我的 asp.net 核心网络应用程序的凭据吗?

重现步骤:

从 Team Services 包选项卡中,我选择“连接到源”并复制 NuGet 包源 URL

在 Visual Studio -> 工具 -> NuGet 包管理器 -> 包管理器设置 -> 包源并添加来自 vso 的提要 url

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

在输出中:

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

【问题讨论】:

  • 你是从VS右上角登录你的VSTS账号的吗?你能分享你重现这个问题的步骤吗?
  • @Eddie-MSFT - 为什么登录更重要? NuGet 上托管的源不需要任何授权。我宁愿认为这可能是需要授权的代理的问题,在这种情况下登录无关紧要? @HPaxton - 如果您尝试使用dotnet restore 从命令行恢复,您会看到同样的问题吗?您能否检查并发布您正在使用的提要 - 如果您这样做 dotnet restore,它将显示它在最后使用的提要。
  • @Pawel 他/她正在使用作为私人订阅源的视觉工作室在线订阅源。
  • @Eddie-MSFT 我在visual studio的右上角签名。我能够将来自同一 Visual Studio 实例中的同一 vso 提要的包添加到框架类库项目中。
  • 我在 Visual Studio 2017 中遇到了同样的问题。重新启动 Visual Studio 为我解决了这个问题。

标签: asp.net-core azure-devops nuget-package nuget-package-restore


【解决方案1】:

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

我已经安装了VS Community 2019​,昨天我决定删除VS 2017,但是之后,当我尝试恢复公司制作的Nuget Packages时,它开始显示错误401 Unauthorized强>。

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

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

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

【讨论】:

  • 这为我解决了问题。谢谢!我刚刚删除了任何引用我公司的 NuGet 提要的凭据。
  • 这对我也有用。我刚刚在通用凭据下更新了“VSCredentials_[whatever]”凭据的密码,重新启动了 VS 2019 并开始工作。
【解决方案2】:

我可以在我身边重现您的问题,以下是我用来恢复软件包的解决方法:

  1. 从“VS\Tools\NuGet Package Manager\Package sources”中删除 VSTS 提要资源。
  2. 从您的 VSTS 门户网站打开“包”选项卡。
  3. 选择您要连接的提要并点击“连接到提要”选项。
  4. 在对话框中选择“个人访问令牌”方法。
  5. 在对话框中复制生成的命令。
  6. 在您的计算机上以管理员身份运行 CMD。
  7. 将复制的命令粘贴到 CMD 中。
  8. 在命令后添加“-StorePasswordInClearText”参数。
  9. 运行命令。
  10. 重启 VS。
  11. 安装和恢复包。

【讨论】:

  • 我遇到了同样的问题,所以我按照你的方式使用了 PAT。现在至少我得到一个不同的错误,如下所示。源的密码解密失败:此平台不支持“https://****.pkgs.visualstudio.com/_packaging/myfeed/nuget/v3/index.json”。可以改用明文密码。
  • @SamDevx 检查第 8 步。没有第 8 步,我也会收到该错误消息。
  • 对不起,它现在可以工作了。你的解决方法摇滚!!这里的关键是按照您的建议使用 PAT,但使用 -StorePasswordInClearText 开关进行修改。我终于可以继续这个项目了。但在某些时候,他们(nuget 或 .NET Core 团队)需要解决这个可怕的问题。
  • 完美运行。好东西!谢谢
  • 我们已将此解决方法添加到 VSTS NuGet 源的文档中:visualstudio.com/en-us/docs/package/get-started/nuget/…
【解决方案3】:

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

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

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

当我点击“在输出中显示错误”时,我看到以下内容:

无法从源“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 服务器域而不是 Active Directory 域。

然后我重新打开 Visual Studio,再次打开 NuGet 包管理器,这次(在“已安装”选项卡上)输入我的凭据,包括域(域/用户名)。这解决了问题并允许我连接到 Azure Artifact NuGet 源。

【讨论】:

    【解决方案4】:

    我在 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>
    

    【讨论】:

      【解决方案5】:

      在尝试上述任何方法之前,请先尝试重新启动计算机。

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:
          1. 转到“管理 Nuget 包”
          2. 点击右上角的“设置”
          3. 取消勾选“包”

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多