【问题标题】:How to change content dynamically after function is called in Azure function app如何在 Azure 函数应用中调用函数后动态更改内容
【发布时间】:2021-06-29 02:47:00
【问题描述】:

我正在使用 Visual Studio 2019 开发一个使用 Azure 函数 v3.0 的 Azure 函数应用。我实现了一个时间触发的功能。我想更改function.json中的内容“日程”:

function.json文件:

【问题讨论】:

  • 您可以在 vs 2019 的本地编辑 schedule,然后将其发布到 azure。
  • 我想在调用时间触发函数时动态改变值
  • 这个问题的原理我解释的很清楚了,因为只修改function.json文件并不会改变执行间隔,所以没有必要。
  • 也想办法让你修改文件,但是不行。建议是看@RyanThomas的建议,或者取消这样做的想法,直接修改代码,重新部署即可。

标签: c# azure asp.net-core azure-functions


【解决方案1】:

我之前的回答确实是正确的,我操作的时候。经过大量测试,我认为是因为微软官方更新。如果你也有兴趣,可以尝试使用之前的azure函数进行测试。

再次提醒大家,修改function.json文件也会修改发布文件的.dll,即你修改的TimerTrigger时间不会生效。

让我描述一下我的最新进展。

  1. 创建一个新的天蓝色函数。也可以使用前面的,记得删除SCM_DO_BUILD_DURING_DEPLOYMENTWEBSITE_RUN_FROM_PACKAGE这两个配置。

  2. 使用func azure functionapp publish function_app_name --csharp --nozip --force 命令发布您的函数应用。 step 1. 使用cd命令进入包含host.json文件的文件夹。

    第 2 步。使用 func azure functionapp publish function_app_name --csharp --nozip --force 部署您的函数应用。

    如果中间有错误信息,可以忽略。我的截图显示NativeCommandError。只要最终结果已经上传成功。

  3. 打开 scm 网站或使用 App Service Editor (Preview) ,进行测试。

  4. 检查函数是否可以正常运行,测试后可以正常运行。

以前的

我重新创建了一个 func,发现我现在无法修改 function.json。 Maybe it fixed in 4.1.

现在无法创建新的并对其进行修改。

下面是我之前创建的函数。

我有办法让你修改function.js文件,但是修改不会生效。

原则:

当我们使用vs2019发布时,代码中的这一行

public static void Run([TimerTrigger("*/15 * * * * *")]TimerInfo myTimer, TraceWriter log)

编译后生成.dll文件。生成的function.json文件只是这个Function的属性和内容。修改后.dll文件不会被修改所以不会生效。

以上结论是通过测试得出的。

如何实现function.json文件可以修改

  1. 添加SCM_DO_BUILD_DURING_DEPLOYMENT=true

  2. 删除WEBSITE_RUN_FROM_PACKAGE configuration,或修改为0

  3. 刷新scm站点,如果wwwroot下的文件被删除,请使用vs2019重新部署功能app。

  4. 重复第二步,然后修改function.json文件成功。

以上只允许在发布后修改内容,修改时间不生效,因为.dll还没有被修改过。

【讨论】:

  • 我已经更改了您编辑上述答案的内容,以便我的文件被自动删除
  • @Muthumani SCM_DO_BUILD_DURING_DEPLOYMENT=true 这个配置应该是发布前配置的,所以现在只需要用vs2019重新发布,然后删除这个配置,修改文件即可。
  • 这个我也试过了,但是功能是删除
  • @Muthumani 我知道,我的意思是你应该在 vs2019 之前重新部署。
  • @Muthumani wwwroot下的内容已被删除,因为在vs2019部署function app之前需要配置step1的设置。
【解决方案2】:

部署后更改 function.json 在任何时候都无济于事,因为 .dll 没有得到更新。而是重新部署是更好的选择。

更多阅读:https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference#function-code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2022-11-21
    • 2015-03-18
    • 2019-04-26
    相关资源
    最近更新 更多