我正在尝试使用Nuget.Core来访问nuget Feed,但我确实拥有凭证提供程序,但我仍未获得401授权。我需要采取哪些步骤才能让nuget.core使用凭证提供程序并以编程方式获取访问权限。谢谢。
答案 0 :(得分:1)
我为此苦苦挣扎了好几天-一个issue on the Nuget/Home GitHub让我排在首位,并允许我创建一个API,该API完全像NuGet.Client
那样获取凭据提供程序(我大多是复制并粘贴)来自)
我创建了一个gist
但基本上
CredentialService
并在计算机上填充凭据提供程序
Nuget.Client
的操作HttpHandlerResourceV3.CredentialService
答案 1 :(得分:0)
如果您正在使用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类。