我正在try 从Azure应用程序配置中获取配置,并使用CosmosDbTrigger参数中的值.我正在使用隔离的工作者,从进程中migrations.这曾经是可行的,但现在我使用的是隔离工作线程,该函数无法进行索引.它似乎没有从应用程序配置中看到这些值.

如果您能提供任何指导或帮助,我们将不胜感激.

在使用.ConfigureAppConfiguration时作为提供程序添加的应用程序配置

    var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureAppConfiguration(configBuilder =>
    {
        //connection variable omitted for brevity and security
        configBuilder.AddAzureAppConfiguration(connection);
    })

进程内代码使用类似下面的代码,但它位于

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        var config = builder.ConfigurationBuilder
            .AddEnvironmentVariables()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true);
        config.AddAzureAppConfiguration(connection);
        _config = config.Build();
    }

示例函数

[Function(nameof(SampleFunction))]
public async Task SampleFunctionAsync([CosmosDBTrigger(
    databaseName: $"%{Constants.CosmosDatabaseEnvName}%",
    containerName: $"%{Constants.SampleContainerNameEnvName}%",
    Connection = $"{Constants.CosmosConnectionEnvName}",
    LeaseContainerName = "leases",
    CreateLeaseContainerIfNotExists = true)] IReadOnlyList<JObject> documents
  )

...

预期结果

我期望静态常量类中的字符串值将解析为Azure应用程序配置中的键/值对.所以,举例来说,

public static class Constants
{
    public const string CosmosDatabaseEnvName = "my_cosmos_database"
}

然后在Azure应用程序配置中

my_cosmos_database使用-actual-database-name作为值进行配置

应该使用the-acutal-database-name作为databaseName等的参数值.

实际效果

Function failed indexing <parameter> does not resolve to a value

Azure Functions Worker数量:dotnet8-isolated Azure Functions版本:2.0

适用的Nuget套餐

<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" Version="7.0.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.CosmosDB" Version="4.5.0" />

我还验证了,如果我使用应用程序设置,配置是否正确读入.它在Azure应用程序配置中不起作用.

推荐答案

截至2023年12月,这似乎不受支持:

How to use Azure App Config Service with Azure Functions for binding input parameters:

扩展/绑定当前不支持Worker配置源,因为该配置必须在应用程序/平台级别可用(平台组件取决于该配置).

正如本期中提到的,有预览功能可以使用与Key Vault Reference相同的应用程序配置:

Csharp相关问答推荐

更新数据库中的对象失败,原因是:Microsoft. EntityFrame Core. GbUpdateConcurrencyResponse'

不带身份的Blazor服务器.Net 8 Cookie身份验证

自动映射程序在GroupBy之后使用项目

HttpConext.Request.Path和HttpConext.GetEndpoint()之间的差异

应用程序重新启动后,EFCore列表的BSON反序列化错误

持有者安全定义未显示在Swagger.NET 8中

VS 2022 for ASP.NET Core中缺少自定义项模板

Regex字母数字校验

如何在不复制或使用输出的情况下定义项目依赖

我可以查看我们向应用程序洞察发送了多少数据吗?

如何在.NET Maui中将事件与MVVM一起使用?

如何在特定环境中运行dotnet测试?

Visual Studio,Docker容器-容器调用:连接被拒绝

Foreach非常慢的C#

当`JToken?`为空时?

Cmd中的&ping.end()";有时会失败,而";ping";总是有效

无法使用直接URL通过PictureBox.ImageLocation加载图像

无法创建工具窗口(用于VBIDE、VBA的COM加载项扩展)

C#、Visual Studio代码、调试器、错误处理变量请求.未知错误:0x80131502,

更新实体框架上的被跟踪实体