Я хочу интегрировать свой проект в ASP.NET Core 1.0 с Microsoft Azure KeyVault. Но похоже, что пакет Microsoft.Azure.KeyVault еще не совместим с инфраструктурой «netcoreapp1.0» (я пытаюсь загрузить пакет с помощью диспетчера пакетов NuGet и отображается сообщение об ошибке «несовместимый пакет»). Поэтому я импортировать «net451» рамку в project.json, показанном в этом блоке:Ядро ASP.NET с использованием Azure KeyVault - Ошибка при делегировании KeyVaultClient.AuthenticationCallback
"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
Кто-нибудь знает, как решить эту проблему? Благодарю.
С уважением, Элвин
Спасибо за ответ, я просто попытался воспроизвести эту проблему после отказа от нее в течение нескольких месяцев. Но похоже, что виновником был «пакет еще не поддерживал базовые рамки в то время»? Потому что в то время последняя версия пакета была 1.0.0, а теперь она 2.0.0. Поэтому я попытался найти журнал изменений, и я увидел это сообщение https://docs.microsoft.com/en-us/azure/key-vault/key-vault-dotnet2api-release-notes. В сообщении говорилось, что «.NET Core поддерживается версией библиотеки .NET/C# версии 2.0 для Azure Key Vault». Теперь он работает как шарм без необходимости импорта «net451». – samAlvin