Функция Azure v 2.0 и хранилище ключей

Моя функция Azure написана с использованием Function Runtime Version 2.0 и пытается прочитать секреты из хранилища ключей Azure.

public class KeyVaultAccess
{

    private const string VaulturL = "...";
    private const string ClientId = "...";
    private const string thumbprinT = "...";

    public static string GetSecretIdentifier(string secretName)
    {
        string nextLink = VaulturL + "secrets" + "/" + secretName;
        var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken));
        var getsecrets = Task.Run(async () => await keyVaultClient.GetSecretsAsync(VaulturL));
        Task.WaitAll(getsecrets);

        if (getsecrets.Result == null)
            throw new Exception("Error retrieving secret name from key vault");
        var secret = keyVaultClient.GetSecretAsync(nextLink).GetAwaiter().GetResult();
        var GetSecretvalue = secret.Value;
        return GetSecretvalue;
    }

    private static async Task<string> GetAccessToken(string authority, string resource, string scope)
    {
        var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
        var clientcred = new ClientCredential(ClientId, thumbprinT);
        var result = await context.AcquireTokenAsync(resource, clientcred);
        return result.AccessToken;
    }
}

Я упоминал ниже пакеты nuget в функции. Пакеты Nuget

когда я запускаю функцию, используя VS локальный CLI, и функция не работает и получает ошибку. Ошибка CLI

К вашему сведению, тот же код отлично работает в Azure Function V1.0.

Любая подсказка, что я делаю не так здесь?

1 ответ

Решение

Ошибка вызвана ссылкой Microsoft.IdentityModel.Clients.ActiveDirectory,

Это было исправлено в последней версии функции 2.0.11857(иначе 2.0.1-beta.29). Смотрите этот вопрос GitHub и запрос на получение.

Релиз завершен на портале, но, как говорится в примечании

Этот выпуск еще не был доступен пользователям Visual Studio.

Таким образом, вы можете загрузить cli beta.29 вручную (win-x64 или x86, в зависимости от вашей платформы) и настроить следующие параметры отладки.

Launch: Executable
Executable: C:\Program Files\dotnet\dotnet.exe (set your dotnet path)
Application Arguments: [yourclifolderpath]\Azure.Functions.Cli.win-x64\func.dll start
Working Directory: $(TargetDir)

Другие вопросы по тегам