【发布时间】:2016-06-14 17:55:18
【问题描述】:
我正在尝试使用 Nuget.Core 访问 nuget 提要,并且我确实有凭据提供程序,但我仍然收到 401 未授权。我需要采取哪些步骤才能让 nuget.core 使用凭据提供程序并以编程方式获取访问权限。谢谢你。
【问题讨论】:
我正在尝试使用 Nuget.Core 访问 nuget 提要,并且我确实有凭据提供程序,但我仍然收到 401 未授权。我需要采取哪些步骤才能让 nuget.core 使用凭据提供程序并以编程方式获取访问权限。谢谢你。
【问题讨论】:
我为此苦苦挣扎了好几天——issue on the Nuget/Home GitHub 让我处于领先地位,并允许我创建一个 API 来获取凭据提供程序,就像 NuGet.Client 所做的一样(我主要是从中复制和粘贴)
我创建了一个gist
但基本上
CredentialService 并用您计算机上的凭据提供程序填充它
Nuget.Client 做的吧HttpHandlerResourceV3.CredentialService
【讨论】:
如果您使用的是 NuGet.Core 程序集,则需要创建或使用实现 NuGet.ICredentialProvider 接口的类。
using System;
using System.Net;
using NuGet;
namespace Test
{
class MyCredentialProvider : ICredentialProvider
{
public ICredentials GetCredentials(Uri uri, IWebProxy proxy, CredentialType credentialType, bool retrying)
{
// TODO return the credentials...
throw new NotImplementedException ();
}
}
}
然后创建该类的实例并将其分配给 NuGet.HttpClient。
NuGet.HttpClient.DefaultCredentialProvider = new MyCredentialProvider ();
NuGet 还提供了一个 SettingsCredentialProvider 类,如果您将凭据存储在 NuGet.Config 文件中,您可以使用该类。 SettingsCredentialProvider 在其构造函数中采用 ICredentialProvider 实例,因此如果在 NuGet.Config 文件中未找到任何凭据,您可以传递自己的实现。或者,如果您只想使用存储在 NuGet.Config 文件中的信息以供使用,则将 NullCredentialProvider 传递给 SettingsCredentialProvider 类。
【讨论】: