Azure functions 存储Azure函数的环境变量的最佳位置

Azure functions 存储Azure函数的环境变量的最佳位置,azure-functions,Azure Functions,我正在用几个api键在本地测试azure函数。存储环境变量的最佳位置是什么?如何访问它们?我试过了 System.Environment.GetEnvironmentVariable("name")} 但我不确定环境变量存储在哪里 谢谢 要存储api密钥,可以使用应用程序设置。细节: 要获取环境变量或应用程序设置值,请使用System.environment.GetEnvironmentVariable,如以下代码示例所示: public static void Run(TimerInfo

我正在用几个api键在本地测试azure函数。存储环境变量的最佳位置是什么?如何访问它们?我试过了

System.Environment.GetEnvironmentVariable("name")}
但我不确定环境变量存储在哪里


谢谢

要存储api密钥,可以使用应用程序设置。细节:

要获取环境变量或应用程序设置值,请使用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);
}
详情:


谢谢,Alexey将键/值对放在appsettings.json文件的“Values”属性下。

您应该有一个名为local.settings.json的文件。这是我们的azure网站

它说

这些设置也可以作为环境变量在代码中读取。在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"
  }
}

在Azure Functions 2中,我们移动到ASP.NET核心配置,不再支持ConfigurationManager。这一点在第三章中仍然成立

我看过很多文章,其中人们都在努力让ConfigurationBuilder设置正常工作。问题是,一旦您开始执行最近添加的DI,由于无法访问上下文参数(1),就会出现一些恼人的情况。只使用Environment.GetEnvironmentVariable要干净得多

这完美地映射到Azure函数的配置模型:在dev中,它拾取local.settings.json>Values数组中的项,在生产中,它拾取您的环境变量。它只是工作

我看不到任何负面影响,除了它与我们在MVC中所做的不同。但这不是MVC,而是功能,在MS将这些平台更好地结合起来之前,我们应该对功能上最好的东西敞开心扉,而不是强迫一个不同的范例在这里工作

您的local.settings.json可能如下所示:

{
    "IsEncrypted": false,
    "Values": {
        "KeystoneDB": "[CONNECTION STRING HERE]"
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}
在生产中,您可以在门户中设置环境变量


(1) 据我所知,没有其他干净的方法可以满足ConfigurationBuilder().SetBasePath的要求。请参阅:

好文章。很难在azure页面中找到这样的页面。实际上,我希望在不将设置存储在Azure中的情况下进行本地测试,我从上面收集的设置表明,键/值对属于values属性下的appSettings.json。您能举一个例子说明local.settings.json如何查找AzureWebJobstorage和WEBSITE\u SITE\u NAME吗?看起来您可以在Azure和Azure中使用env变量在visual studio for local runtime:构建的环境变量中进行本地设置如何使用此选项进行环境转换?i、 e.我的dev env值与prod不同。您可以通过更新Azure中的函数应用程序来控制这一点:)谢谢!昨晚刚刚发现。我不得不重新运行
func host start
以从
process.env
获取新值,如
CustomSetting
。方法不明确。上述工作于2017年完成。
{
    "IsEncrypted": false,
    "Values": {
        "KeystoneDB": "[CONNECTION STRING HERE]"
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}