【问题标题】:ASP.NET Core using Azure KeyVault - Error on delegating the KeyVaultClient.AuthenticationCallback使用 Azure KeyVault 的 ASP.NET Core - 委派 KeyVaultClient.AuthenticationCallback 时出错
【发布时间】:2023-03-24 00:14:02
【问题描述】:

我想将我在 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"
    ]
  }  
},

导入“net451”框架后,错误现在消失了。现在我想启动这个块中显示的新 KeyVaultClient 类:

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;
}

问题是我在 this.GetTokenAsync 上收到此错误消息,我已经搜索了几个小时的解决方案,但没有任何运气:Argument 1:cannot convert from 'method group' to 'KeyVaultClient.AuthenticationCallback'

如果我改变了

var keyVaultClient = new KeyVaultClient(this.GetTokenAsync);

到:

var keyVaultClient = new KeyVaultClient((authority, resource, scope) => this.GetTokenAsync(authority, resource, string.Empty));

我仍然收到错误消息:Cannot convert lambda expression to type 'KeyVaultClient.AuthenticationCallback' because it is not a delegate type

有人知道如何解决这个问题吗?谢谢。

问候, 阿尔文

【问题讨论】:

    标签: asp.net-core azure-keyvault


    【解决方案1】:

    错误cannot convert from 'method group' 是因为您有名称为GetTokenAsync 的重载或扩展(即不止一种方法)。尝试重命名其中一个,它应该可以工作。

    【讨论】:

    • 感谢您的回答,我在放弃了几个月后才尝试重现此问题。但看起来罪魁祸首是“当时的包还没有支持核心框架”?因为当时最新的包版本是1.0.0,现在是2.0.0。所以我试着寻找更新日志,我看到了这个帖子docs.microsoft.com/en-us/azure/key-vault/…。该帖子指出“2.0 版本的 Azure Key Vault .NET/C# 库支持 .NET Core”。它现在就像魅力一样工作,无需导入“net451”框架。
    【解决方案2】:

    所以在放弃这个问题很长时间之后,我决定再次调查它,感谢@fernacolo 的回答。原来,当时我使用的是 Microsoft.Azure.KeyVault 包的 1.0.0 版本(当时是最新版本,如图 1 所示)。现在该软件包的 2.0.0 版本可用,当我找到更新日志时,我看到了这篇帖子 https://docs.microsoft.com/en-us/azure/key-vault/key-vault-dotnet2api-release-notes,其中指出“2.0 版本的 Azure Key Vault .NET/C# 库支持 .NET Core”。

    图 1. Microsoft.Azure.KeyVault 包的版本历史

    现在不需要在 project.json 中导入“net451”框架,错误就消失了。

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 2016-09-18
      • 2023-03-19
      • 2021-08-08
      • 2022-08-02
      • 2015-06-08
      • 2018-04-18
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多