gpt4 book ai didi

c# - 使用 Nuget Core DLL 设置包凭据

转载 作者:行者123 更新时间:2023-11-30 14:58:35 24 4
gpt4 key购买 nike

我想通过 Http Autentication 在私有(private)订阅源中获取包列表。这是我的代码,当我调用 ListPlugins 方法时出现 401 错误,我该如何设置凭据?

public  class PluginManager
{
private readonly string _pluginFolder;
private readonly IPackageRepository _packageRepository;
private readonly PackageManager _packageManager;

public PluginManager(string plugInFolder, string packageRepositoryAddres)
{
_pluginFolder = plugInFolder;
_packageRepository = PackageRepositoryFactory.Default.CreateRepository(packageRepositoryAddres);
_packageManager = new PackageManager(_packageRepository, _pluginFolder);
}

public IEnumerable<PluginModel> ListPlugins()
{
IPackage dummy = null;

var result = _packageManager.SourceRepository.GetPackages()
.OrderBy(p => p.Id)
.ToList()
.Select(p => new PluginModel()
{
PackageId = p.Id,
PackageVersion = p.Version.ToString(),
PackageDescription = p.Description,
IsInstalled = _packageManager.LocalRepository.TryFindPackage(p.Id, p.Version, out dummy)
})
.ToList();

return result;
}

public void Install(string packageId, string packageVersion)
{
_packageManager.InstallPackage(packageId, new SemanticVersion(packageVersion));
}

public void Uninstall(string packageId, string packageVersion)
{
_packageManager.UninstallPackage(packageId, new SemanticVersion(packageVersion));
}
}

最佳答案

执行此操作的一种方法是实现您自己的 ICredentialProvider 或使用 NuGet.Core 中提供的 SettingsCredentialProvider 类,这就是 Visual Studio 中的 NuGet 和 SharpDevelop 的工作原理。设置凭据提供程序将读取 NuGet.config 文件中的任何凭据。

例如,在 SharpDevelop 和 MonoDevelop 中,以下代码使用设置提供程序和自定义提供程序:

    static void InitializeCredentialProvider()
{
ISettings settings = Settings.LoadDefaultSettings(null, null, null);
var packageSourceProvider = new PackageSourceProvider(settings);
var credentialProvider = new SettingsCredentialProvider(new SharpDevelopCredentialProvider(), packageSourceProvider);

HttpClient.DefaultCredentialProvider = credentialProvider;
}

自定义凭据提供程序,至少在 SharpDevelop 中目前什么都不做,在 Visual Studio 中它会提示用户输入他们的凭据。您可以忽略设置提供程序,而只使用自定义凭据提供程序。 SharpDevelop 中凭证提供程序的当前实现是:

public class SharpDevelopCredentialProvider : ICredentialProvider
{
public ICredentials GetCredentials(Uri uri, IWebProxy proxy, CredentialType credentialType, bool retrying)
{
return null;
}
}

因此,您可以从自定义凭据提供程序类中的 GetCredentials 方法返回凭据。

需要在HttpClient 上设置provider。您正在使用 PackageRepositoryFactory 类,因此如果您的包源是 url 而不是文件,它将使用 HttpClient。

关于c# - 使用 Nuget Core DLL 设置包凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com