Asp.net core ASP.NET Core使用Azure KeyVault-委派KeyVault Client.AuthenticationCallback时出错
我想将ASP.NET Core 1.0上的项目与Microsoft Azure KeyVault集成。但Microsoft.Azure.KeyVault软件包似乎与“netcoreapp1.0”框架尚不兼容(我尝试使用NuGet软件包管理器下载该软件包,并显示“不兼容软件包”错误消息)。因此,我在project.json中导入了“net451”框架,如下所示:Asp.net core ASP.NET Core使用Azure KeyVault-委派KeyVault Client.AuthenticationCallback时出错,asp.net-core,azure-keyvault,Asp.net Core,Azure Keyvault,我想将ASP.NET Core 1.0上的项目与Microsoft Azure KeyVault集成。但Microsoft.Azure.KeyVault软件包似乎与“netcoreapp1.0”框架尚不兼容(我尝试使用NuGet软件包管理器下载该软件包,并显示“不兼容软件包”错误消息)。因此,我在project.json中导入了“net451”框架,如下所示: "frameworks": { "netcoreapp1.0": { "imports": [ "net451",
"frameworks": {
"netcoreapp1.0": {
"imports": [
"net451",
"dotnet5.6",
"portable-net45+win8"
]
}
},
public void GetKeyVaultSecret()
{
var keyVaultClient = new KeyVaultClient(this.GetTokenAsync);
// ....
}
private async Task<string> GetTokenAsync(string authority, string resource, string scope)
{
var authenticationContext = new AuthenticationContext(authority);
var authenticationResult =
await authenticationContext.AcquireTokenAsync(resource, this.clientAssertionCertificate);
return authenticationResult.AccessToken;
}
导入“net451”框架后,错误现在消失了。现在,我想启动一个新的KeyVaultClient类,如图所示:
"frameworks": {
"netcoreapp1.0": {
"imports": [
"net451",
"dotnet5.6",
"portable-net45+win8"
]
}
},
public void GetKeyVaultSecret()
{
var keyVaultClient = new KeyVaultClient(this.GetTokenAsync);
// ....
}
private async Task<string> GetTokenAsync(string authority, string resource, string scope)
{
var authenticationContext = new AuthenticationContext(authority);
var authenticationResult =
await authenticationContext.AcquireTokenAsync(resource, this.clientAssertionCertificate);
return authenticationResult.AccessToken;
}
致:
我仍然收到错误消息:无法将lambda表达式转换为“KeyVaultClient.AuthenticationCallback”类型,因为它不是委托类型
有人知道如何解决这个问题吗?谢谢
问候,,
Alvin错误
无法从“方法组”
转换,因为您有名为GetTokenAsync
的重载或扩展(即多个方法)。尝试重命名其中一个,它应该会起作用。因此,在很长时间放弃这个问题后,我决定再次研究它,感谢@fernacolo的回答。事实证明,当时我使用的是Microsoft.Azure.KeyVault包的1.0.0版(这是当时的最新版本,如图1所示)。现在该软件包的2.0.0版本已经可用,当我找到变更日志时,我看到了这篇文章,其中指出“.NET核心由Azure Key Vault.NET/C#library的2.0版本支持”
图1。Microsoft.Azure.KeyVault包的版本历史记录
这个错误现在消失了,不需要在project.json中导入“net451”框架。谢谢你的回答,我在放弃这个问题几个月后,刚刚尝试重现这个问题。但罪魁祸首似乎是“当时该方案尚未支持核心框架”?因为当时最新的软件包版本是1.0.0,现在是2.0.0。所以我试着寻找变更日志,我看到了这篇文章。这篇文章指出,.NET核心由Azure Key Vault.NET/C#library的2.0版本支持。它现在工作得很好,无需导入“net451”框架。