以下是基于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 获取上述两个变量。
要从 Azure Function App 中的
appSettings.json
读取设置,您可以使用 ConfigurationBuilder
构建配置对象,然后从中访问设置。以下是如何修改 Azure Function 代码以从 appSettings.json
读取设置:
appSettings.json
:{
"DocUploadQueueName": "your-service-bus-queue-name",
"DocUploadAzureServiceBusConnectionString": "your-service-bus-connection-string"
}
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
}
}
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Configuration" Version="4.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
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"
替换为您的实际队列名称和连接字符串。