Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ASP.NET Core使用Azure KeyVault-委派KeyVault Client.AuthenticationCallback时出错_Asp.net Core_Azure Keyvault - Fatal编程技术网

Asp.net core ASP.NET Core使用Azure KeyVault-委派KeyVault Client.AuthenticationCallback时出错

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",

我想将ASP.NET Core 1.0上的项目与Microsoft Azure KeyVault集成。但Microsoft.Azure.KeyVault软件包似乎与“netcoreapp1.0”框架尚不兼容(我尝试使用NuGet软件包管理器下载该软件包,并显示“不兼容软件包”错误消息)。因此,我在project.json中导入了“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”框架。