【问题标题】:VSTS unable to load the service index for source 401VSTS 无法加载源 401 的服务索引
【发布时间】:2018-11-29 01:07:55
【问题描述】:

我知道其他关于相同签名的帖子。经过他们之后,我仍然无法解决我的问题。

我的团队使用 VSTS 的构建定义进行持续集成。

在持续拉取请求之前,此构建定义工作正常。 我在 Nuget 还原期间遇到了以下错误消息

2018-06-20T00:37:27.6438127Z System.AggregateException:发生一个或多个错误。 ---> NuGet.Protocol.Core.Types.FatalProtocolException:无法加载源https://microsoft.pkgs.visualstudio.com/_packaging/CBT/nuget/v3/index.json 的服务索引。 ---> System.Net.Http.HttpRequestException:响应状态码不表示成功:401(未授权)。

我在 nuget.config 中确实有 https://microsoft.pkgs.visualstudio.com/_packaging/CBT/nuget/v3/index.json,并且在失败的 PR 中的 nuget.config 中没有任何变化

我可以使用 VS2017 在我的本地计算机上成功还原和构建整个解决方案。 PR 中唯一相关的更改是它使用 packagereference 来获取 nuget 包,而不是使用 package.config。我尝试重新使用 package.config,但构建仍然会失败并显示相同的错误消息。

提前致谢。

【问题讨论】:

  • 您需要为您帐户之外的提要添加凭据。

标签: c# nuget azure-devops azure-pipelines nuget-package-restore


【解决方案1】:

您可以使用指定 nuget.config 文件中的凭据(PAT 或备用凭据)更新 VSTS 提要。

如:

nuget sources update -Name "vstsfeed" -Source https://microsoft.pkgs.visualstudio.com/_packaging/CBT/nuget/v3/index.json -Username "Alternate username" -Password "alternate password" -configfile /path/to/nuget.config

然后您可以提交nuget.config 文件的更改并推送到 VSTS 存储库。并再次构建以检查它是否有效。

【讨论】:

  • 为什么建议在源代码管理中输入密码?
  • 密码会被编码到nuget.config文件中,所以不会将密码放入源代码管理中。
【解决方案2】:

您可以使用已接受答案中所示的命令 - 此外,您可以将提要添加到位于您的存储库根目录中的 nuget.config 文件中

注意,这显示了如何为自定义提要添加凭据,提要名称中有空格:My Nuget Artifacts

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <!-- Allow NuGet to download missing packages -->
    <add key="enabled" value="True" />
    <!-- Automatically check for missing packages during build in Visual Studio -->
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
    <add key="My Nuget Artifacts" value="https://pkgs.dev.azure.com/ConsotoOrg/_packaging/Consoto/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <My_x0020_NuGet_x0020_Artifacts>
      <add key="Username" value="justme" />
      <add key="ClearTextPassword" value="xyzyoqyvslyfs1t1khru6wd33gebujhpr9moocbujfhv8ukxtxyz" />
    </My_x0020_NuGet_x0020_Artifacts>
  </packageSourceCredentials>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <!--
        Used to specify trusted signers to allow during signature verification.
        See: nuget.exe help trusted-signers
    -->
  <trustedSigners>
    <author name="microsoft">
      <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
    </author>
    <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
      <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
      <owners>microsoft;aspnet;nuget</owners>
    </repository>
  </trustedSigners>
</configuration>

FWIW - 最近几天,我发现我可以通过从配置中删除 trustedSigners 部分来清除一些 NuGet 还原错误

【讨论】:

    【解决方案3】:

    这不是 OP 的问题,但我在这里添加了一条注释,因为我在搜索相同的错误消息时发现了这个问题。

    在我们的例子中,我们正在为 Azure DevOps 构建一个 .net 5 应用程序。我们必须使用 NuGet 工具安装程序升级到更新版本的 NuGet。然后使用带有 restore 命令的 .Net Core 任务进行恢复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-10
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      相关资源
      最近更新 更多