Azure 函数环境变量

Mik*_*ron 7 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"]);
Run Code Online (Sandbox Code Playgroud)

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

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "abc123",
    "AzureWebJobsDashboard": "abc123",
    "MyBindingConnection": "abc123"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在本地运行它时,那

log.Info(config["AzureWebJobsStorage"]); 
Run Code Online (Sandbox Code Playgroud)

行没有返回任何内容......但是当我部署到 Azure 时,我在控制台中看到“abc123”。

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

log.Info(config["Values:AzureWebJobsStorage"]);
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:澄清一下,这些设置在该功能的应用程序设置配置的: 在此处输入图片说明

Kan*_*ane 6

假设您使用面向 Azure Functions 的 ~2 运行时,您可以通过以下方式访问您的配置值:

log.Info(Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process));
Run Code Online (Sandbox Code Playgroud)