我们如何读取 Azure 函数的 function.json 文件中的一些自定义属性?
我想读取刚刚添加到 run.csx 文件中的 function.json 文件的属性的值。
我正在 Azure 门户本身上执行此操作。
注意:我在互联网上的任何地方都找不到解决方案。
Azure 函数具有特定的架构,您不能或不应该在那里添加自定义配置。 http://json.schemastore.org/function
应为此使用 Azure 函数应用设置,如下所述:
https://learn.microsoft.com/bs-latn-ba/azure/azure-functions/functions-app-settings
这是可能的。 ExecutionContext.FunctionDirectory
将提供包含其function.json
文件的函数本地目录的路径。然后,从函数中正常访问该文件很简单。在下面的示例中,我使用 ConfigurationBuilder
像任何其他 JSON 配置文件一样加载文件。
using System;
using System.Reflection;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ExecutionContext context, ILogger log)
{
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionDirectory)
.AddJsonFile("function.json")
.AddUserSecrets(Assembly.GetExecutingAssembly(), true)
.Build();
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
log.LogInformation($"Fucntion Setting value: {config["generatedBy"}");
}
我不对在function.json
中使用自定义值的智慧发表评论.
在开发过程中,Visual Studio经常创建和rec-create function.json
因此将值注入function.json
可能会很棘手。(我需要在构建项目后但在运行项目之前手动编辑 bin 文件夹中的function.json
文件。
function.json
中的值不能用作任何触发器/输入/输出绑定的参数。所以你不能做以下事情:
[FunctionName("Function1")]
public static void Run([TimerTrigger("%customproperty%")] TimerInfo myTimer, ExecutionContext context, ILogger log)