2017-01-05 4 views
2

Я тестирую лазурную функцию локально с несколькими ключами api. Какое место лучше всего хранить в переменных среды и как мне обращаться к ним? Я пробовалЛучшее место для хранения переменных окружения

System.Environment.GetEnvironmentVariable("name")} 

но я не уверен, где хранится переменная среды.

Спасибо!

ответ

2

У вас должен быть файл local.settings.json. Вот лазурь сайт Functions-Run-Local

Он утверждает

Эти настройки также можно прочитать в вашем коде, как переменные окружения. В C# используйте System.Environment.GetEnvironmentVariable или ConfigurationManager.AppSettings. В JavaScript используйте process.env. Параметры, указанные как переменная системной среды, имеют приоритет над значениями в файле local.settings.json.

пример local.settings.json

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
    }, 
    "Host": { 
    "LocalHttpPort": 7071, 
    "CORS": "*" 
    }, 
    "ConnectionStrings": { 
    "SQLConnectionString": "Value" 
    } 
} 

Он говорит, что вы должны поставить настройки приложения под Значения собственности в local.settings.json.

Чтобы получить, я использовал ConfigurationManager.AppSettings["CustomSetting"], так как он позволяет извлекать строки подключения.

Я только что играл с этим и обнаружил, что вы должны иметь строковый ключ и строковое значение. У меня возникла ошибка, когда я попытался иметь подразделение (например, в appsettings.json). Я должен был иметь local.settings.json выглядеть так:

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
    "CustomSetting":"20" 
    } 
} 
+0

вы делаете преобразования среды с этим? т.е. мои значения dev env отличаются от prod. –

+0

Вы можете контролировать это, обновив приложение функций в Azure :) – chris31389

+0

Спасибо! Просто нашел это вчера вечером. –

2

Чтобы сохранить ключи api, вы можете использовать настройки приложения. Реквизиты: https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings#application-settings

Чтобы получить переменную окружения или значение настройки приложения, используйте System.Environment.GetEnvironmentVariable, как показано в следующем примере кода:

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 
    log.Info(GetEnvironmentVariable("AzureWebJobsStorage")); 
    log.Info(GetEnvironmentVariable("WEBSITE_SITE_NAME")); 
} 

public static string GetEnvironmentVariable(string name) 
{ 
    return name + ": " + 
     System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); 
} 

Детали: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#environment-variables

Спасибо , Alexey

+0

Хорошая статья. Трудно перемещаться по лазурным страницам, чтобы найти подобные. Я действительно хочу проверить это локально, не имея настроек, сохраненных в Azure, которые я собрал из вышеприведенного, что пары ключ/значение принадлежат в appSettings.json под свойством values. – DarthVadar123451

+0

Можете ли вы привести пример того, как local.settings.json будет искать AzureWebJobsStorage и WEBSITE_SITE_NAME? – chris31389

+0

Похоже, вы можете использовать переменные env в Azure и локально устанавливать их в visual studio для локальной среды выполнения: https://msdn.microsoft.com/en-us/library/669zx6zc.aspx#Setting переменные окружения для сборки – th3morg

0

Поместите пары ключ/значение в файл appsettings.json под свойством «Значения».

Смежные вопросы