如何使用NuGet.core设置凭据提供程序?

时间:2016-06-14 17:55:19

标签: c# nuget

我正在尝试使用Nuget.Core来访问nuget Feed,但我确实拥有凭证提供程序,但我仍未获得401授权。我需要采取哪些步骤才能让nuget.core使用凭证提供程序并以编程方式获取访问权限。谢谢。

2 个答案:

答案 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类。