【问题标题】:Where to store Settings from local.settings.json for proddeployment?在哪里存储 local.settings.json 中的设置以进行产品部署?
【发布时间】:2018-12-13 10:16:12
【问题描述】:

对于部署后应该在 Azure 函数中使用的设置存储位置,我感到有些困惑。

在本地测试中,我在local.settings.json 中有连接字符串之类的设置,建议阅读以下代码:

[FunctionName("SomeEvent")]
public static void Run(
  [EventHubTrigger("some-hub", Connection = "EventHubConnection" )]
  EventData ev,
  ILogger log,
  ExecutionContext context,
  IConfiguration configuration,
  [EventHub("brd-iot-eventhubs", Connection = "OutputEventHubConnection")]
  ICollector<EventData> outputEvents)
  {
    var config = new ConfigurationBuilder()
   .SetBasePath(context.FunctionAppDirectory)
    .AddJsonFile(SETTINGS, optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

    string customername = config.GetValue<string>("Customer");
    string connectionString = config.GetConnectionString("myDatabase");
    [...]

现在我想在 Azure 上部署后进行设置(具有不同的值)。 AFAIK host.json 有所不同,因为这不是按功能配置,而是全局配置。

我可以直接在 Azure 中手动编辑属性,但我想要一个可以部署的设置文件。这样做的方法是什么?也许我只需要知道,设置文件必须有什么名称。

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    您可以将自定义设置放入您需要的任何文件中,并使用ConfigurationBuilder 读取它们。将自定义设置文件,比如说appsettings.json 放在函数项目下,并将其设置为复制到输出/发布目录(如果较新则复制),这样它可以被VS发布部署。

    但是对于函数绑定相关的设置,如EventHubConnectionOutputEventHubConnection,函数运行时会从环境变量中读取它们。我们必须在 Azure 门户上回复 Application settings,它将它们注入到环境变量中。

    另外请注意,VS 提供了一个友好的 UI 供我们在本地和 Azure 环境中配置不同的设置。我们可以选择从本地插入或者新建设置。(注意这里的空值表示对应环境中没有这样的设置)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 2014-09-21
      相关资源
      最近更新 更多