我正在尝试从Azure应用程序配置中读取eventhubname和连接字符串,而不是功能应用程序设置,但我无法使其工作,如果我从功能应用程序本身读取,它可以正常工作,但我需要从应用程序配置集中配置存储中读取。
这是我到目前为止的小功能
public class CDSSoftDelete
{
static string _eventHubname = null;
string _connectionString;
private readonly IConfiguration _config;
public CDSSoftDelete(IConfiguration config, IConfigurationRefresher configurationRefresher)
{
if (config == null) throw new ArgumentNullException(nameof(config));
if (configurationRefresher == null) throw new ArgumentNullException(nameof(configurationRefresher));
configurationRefresher.TryRefreshAsync();
_config = config;
_eventHubname = config["SLQueueManager:Settings:EventHubName"];
_connectionString = config["SLQueueManager:Settings:EventHubConnectionString"];
}
[FunctionName("CDSSoftDelete")]
public async Task Run([EventHubTrigger(_config["SLQueueManager:Settings:EventHubName"], Connection = _connectionString)] EventData[] events, ILogger log)
{
}
}
但这不起作用,因为_config变量没有对象引用,所以它有点像catch22
如何正确读取这些配置设置?
以下是如何从Azure应用程序配置中获取队列名称并将其用于QueueTrigger的示例。您应该能够为EventHubTrigger执行类似的操作。它使用应用程序设置绑定表达式。请注意,由于Azure功能的限制,消费计划中不支持此功能。
https://github.com/Azure/AppConfiguration/blob/main/examples/DotNetCore/AzureFunction/FunctionApp/ReadQueuedMessage.cs
您需要使用dependency injection
并添加Azure App Configuration
作为额外的配置源,以便您的应用程序功能与之对话。
你可以按照快速启动指南在你的启动注册他们。
使用此代码:
Environment.GetEnvironmentVariable("something");