Как статически использовать ConfigurationBuilder в функции Azure v2 (ядро)? - PullRequest
0 голосов
/ 17 января 2019

При переносе функции Azure с v1 на v2 меняется способ использования менеджера конфигурации для чтения local.settings.json.

Ранее я использовал следующий код для включения повторного пулирования соединений между экземплярами функций:

public static class Redis
{
    /// <summary>
    /// Initializes the REDIS connection.
    /// </summary>
    private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        return ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["CacheConnection"]);
        });

    public static IDatabase Database => LazyConnection.Value.GetDatabase();
}

Однако в v2 ConfigurationManager больше не доступен, и мы должны использовать что-то вроде:

new ConfigurationBuilder()
        .SetBasePath(context.FunctionAppDirectory)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .Build();

Однако, поскольку для этого требуется context, который доступен только во время выполнения функции, мы не можем создать статический класс, общий для всех функций.Можно ли статически читать файл app.settings.json в функциях Azure v2?

1 Ответ

0 голосов
/ 18 января 2019

Мы можем использовать

var config = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .Build();
string cacheConnection = config["CacheConnection"];

Или просто

Environment.GetEnvironmentVariable("CacheConnection");

Значения в local.settings.json (также параметры приложения в Azure) автоматически вводятся в EnvironmentVariables при запуске узла функции.

...