Azure函数环境变量

时间:2019-02-07 18:00:03

标签: c# azure azure-functions

我正在尝试创建一个超基本的Azure函数,但是在环境变量方面遇到了麻烦。在线阅读各种教程,

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

        log.Info(config["AzureWebJobsStorage"]);

我的local.settings.json看起来像这样:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "abc123",
    "AzureWebJobsDashboard": "abc123",
    "MyBindingConnection": "abc123"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}

当我在本地运行时,

log.Info(config["AzureWebJobsStorage"]); 

该行什么也不会返回...但是当我部署到Azure时,我会在控制台中看到“ abc123”。

但是,如果我将该行更改为

log.Info(config["Values:AzureWebJobsStorage"]);

然后,当我在本地运行时,我看到“ abc123”,但是当我部署到Azure时,我什么也看不到。

是否缺少能够以本地方式或部署方式访问环境变量的东西?

编辑:为清楚起见,这些设置 是在该功能的应用设置中配置的: enter image description here

2 个答案:

答案 0 :(得分:1)

在本地测试功能时,这些环境变量会起作用。但是,当部署到Azure功能门户时,需要使用它们的内置系统来设置变量以处理环境变量。

将键值复制并粘贴到下图中突出显示的部分中。

<Azure Functions Portal - Environmental

答案 1 :(得分:1)

假设您正在使用Azure功能的〜2运行时,则可以通过以下方式访问配置值:

log.Info(Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process));