我正在编写一个Azure函数(隔离模式下的服务总线主题触发函数),它是一个更大的解决方案的一部分,该解决方案具有API和其他项目。API从Azure应用程序配置服务读取配置设置,并且工作正常。
我想做的是从那里读取我的函数中的设置,并根据这些设置设置为函数设置绑定,但它不起作用。
我是这么做的:
- 我在Azure订阅中创建了一个应用配置服务,并在其中添加了配置密钥。
- 然后,我使用如下代码在
Program.cs
中添加了对该应用配置服务的引用:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureAppConfiguration(builder =>
{
builder.AddAzureAppConfiguration(
"Endpoint=https://myfunctionconfig.azconfig.io;Id=somerandomstring;Secret=otherrandomstring",
optional: false)
.AddEnvironmentVariables()
.Build();
})
.ConfigureFunctionsWorkerDefaults()
.Build();
host.Run();
- 我的函数代码看起来像这样:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace ServiceBusTriggeredFunction;
public static class ServiceBusTopicTrigger
{
[Function("ServiceBusTopicTrigger")]
public static void Run([ServiceBusTrigger("%FunctionsConfiguration:ServiceBusTopicTrigger:Topic%", "%FunctionsConfiguration:ServiceBusTopicTrigger:Subscription%", Connection = "FunctionsConfiguration:ServiceBusTopicTrigger:Connection")] string mySbMsg,
FunctionContext context)
{
var logger = context.GetLogger("ServiceBusTopicTrigger");
logger.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
}
但是,当我在本地运行代码时,我得到以下错误:
“ServiceBusTopicTrigger”函数出错:Microsoft.Azure.WebJobs.Host:索引方法“Functions. ServiceBusTopicTrigger”时出错。Microsoft.Azure.WebJobs.Host:“%FunctionsConfiguration:ServiceBusTopicTrigger:Topic%”未解析为值。
基本上问题是它无法读取设置值(FunctionsConfiguration:ServiceBusTopicTrigger:Topic
)。
但是,如果我在local.settings.json
中定义相同的设置,相同的代码可以完美地工作。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"FunctionsConfiguration:ServiceBusTopicTrigger:Connection": "Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=myaccesskey=",
"FunctionsConfiguration:ServiceBusTopicTrigger:Topic": "topic",
"FunctionsConfiguration:ServiceBusTopicTrigger:Subscription": "subscription"
}
}
我想知道是否有人能告诉我我在这里做错了什么,是否有一种方法让我从应用程序配置服务中读取设置(我想这也适用于appsettings.json
),并根据设置设置函数绑定。
1条答案
按热度按时间31moq8wy1#
我在Github上问了同样的问题-https://github.com/Azure/azure-functions-dotnet-worker/issues/1437,这是我得到的回复:
扩展/绑定当前不支持工作者配置源,因为该配置必须在应用程序/平台级别可用(平台组件依赖于该配置)。
目前,您的最佳选择是使用此处描述的功能:https://learn.microsoft.com/en-us/azure/app-service/app-service-configuration-references