Azure Function App Service Bus 触发器来自 appSettings.json 的连接字符串

问题描述 投票:0回答:1

以下是基于Azure Service Bus Trigger的功能:

[Function(nameof(DocumentInboundProcessor))]
public async Task Run([ServiceBusTrigger("%DocUploadQueueName%", Connection = 
"%DocUploadAzureServiceBusConnectionString%")] ServiceBusReceivedMessage message)

我知道在 local.settings.json 中设置这些设置将在本地工作。

在 Azure 上的生产和测试环境中,我们如何从 appsettings.json 读取这些值。通常,我们将所有应用程序设置存储在 appsettings.json 中并从 appsettings.json 读取。如何从服务器中的 appSettings.json 获取上述两个变量。

c# azure-functions azureservicebus
1个回答
0
投票

要从 Azure Function App 中的

appSettings.json
读取设置,您可以使用
ConfigurationBuilder
构建配置对象,然后从中访问设置。以下是如何修改 Azure Function 代码以从
appSettings.json
读取设置:

  1. 将您的设置添加到
    appSettings.json
    :
{
  "DocUploadQueueName": "your-service-bus-queue-name",
  "DocUploadAzureServiceBusConnectionString": "your-service-bus-connection-string"
}
  1. 修改您的功能代码以从
    appSettings.json
    读取设置:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

public class DocumentInboundProcessor
{
    private readonly IConfiguration _configuration;

    public DocumentInboundProcessor(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    [Function(nameof(DocumentInboundProcessor))]
    public async Task Run([ServiceBusTrigger("%DocUploadQueueName%", Connection = "%DocUploadAzureServiceBusConnectionString%")] ServiceBusReceivedMessage message, FunctionContext context)
    {
        var logger = context.GetLogger<DocumentInboundProcessor>();

        // Access settings from configuration
        var queueName = _configuration["DocUploadQueueName"];
        var connectionString = _configuration["DocUploadAzureServiceBusConnectionString"];

        // Your function logic here
        logger.LogInformation($"Processing message from queue: {queueName}");
        logger.LogInformation($"Using connection string: {connectionString}");

        // Process the message
    }
}
  1. 确保您已将必要的 NuGet 包添加到项目中:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Configuration" Version="4.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
  1. 在您的
    Program.cs
    中,将应用程序配置为从
    appSettings.json
    读取设置:
builder.Services.AddOptions();
builder.Services.Configure<ExecutionContextOptions>(options =>
{
    options.AppDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
});

builder.Services.AddConfiguration();
builder.Services.AddSingleton<IConfiguration>(new ConfigurationBuilder()
    .SetBasePath(context.ApplicationRootPath)
    .AddJsonFile("appSettings.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build());

通过此设置,您的 Azure Function 将从本地和 Azure 环境中的

appSettings.json
读取设置。确保将
"your-service-bus-queue-name"
"your-service-bus-connection-string"
替换为您的实际队列名称和连接字符串。

© www.soinside.com 2019 - 2024. All rights reserved.