【问题标题】:How to change azure function local.settings.json based on solution configuration?如何根据解决方案配置更改 azure 函数 local.settings.json?
【发布时间】:2019-08-31 00:28:48
【问题描述】:

我们有一个使用 azure 服务总线的项目,我们需要并行开发,因此我们需要一个将服务总线移除为共享资源的解决方案,因此当开发人员 A 发布消息时,它不会影响开发人员 B。

一种解决方案是复制服务总线,以便新总线具有相同的主题和订阅,但我们需要根据 Debug/DebugTest/Release 活动解决方案配置更改 ServiceBusTrigger 连接,或者找到更改 ServiceBusTrigger 连接的方法一个简单的动作即可完成多个项目。

【问题讨论】:

    标签: azure configuration azure-functions azureservicebus


    【解决方案1】:

    您可以采取的几种方法之一是有条件地包含一个遵循您的约定的文件。该文件可以设为可选 (optional: true) 并使用您所在环境的前缀,通过环境变量进行通信。

    伪代码:

    var envronment = Environment.GetVariable("EnvironmentName");
    
    var builder = new ConfigurationBuilder()
      // ...
      .AddJsonFile($"{environment}.appsettings.json", optional: true);
      Configuration = builder.Build();
    

    这将允许您为每个环境加载连接字符串的覆盖。

    【讨论】:

    • 一个具有服务总线触发器的天蓝色函数需要一个总线连接字符串,它通过微软设计从 local.settings.json 加载它,我无法控制那部分;此时我可以编写任何代码,该函数已被触发,因此需要在函数方法触发之前完成更改;我们已经在使用您描述的代码,但在 webapi 项目中
    • ServiceBusTrigger 不需要连接字符串,而是连接字符串 name。这意味着您的本地设置文件在不同的环境中可以有不同的,但使用相同的设置名称。要影响构建器,您不会从函数体中加载它,而是从启动代码中加载它,该代码旨在在调用函数之前运行。
    • 好的,现在说得通了;我认为问题是我们使用了一些旧式 azure 函数,我们没有任何启动文件(而且我不知道有可能有一个),所以我们无法访问配置生成器或 DI ,创业改变了一切,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2015-08-25
    • 2012-05-18
    相关资源
    最近更新 更多