我的 servicebustrigger 连接字符串位于 appsettings.json 文件中。 function app 8 版本无法绑定值。
这是appsettings.json 文件
方法一:
`{
"keyVault": "https://abc/",
"NormalTopicName": "abc",
"NormalTelemetrySubscriptionName": "abc",
"ServiceBusConnection": "connectionstring-value",
}`
方法2:
`{
"keyVault": "https://abc/",
"NormalTopicName": "abc",
"NormalTelemetrySubscriptionName": "abc",
"ServiceBusConnection": "@Microsoft.KeyVault(VaultName=abc;SecretName=abc--secret)",
}`
方法 2 效果很好。当我在 localsettings.json 文件中执行相同操作时。
这是 localsettings.json 文件
`{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"keyVault": "https://abc/"
"NormalTopicName": "abc",
"NormalTelemetrySubscriptionName": "abc",
"ServiceBusConnection": "@Microsoft.KeyVault(VaultName=abc;SecretName=abc--secret)",
}
}`
这是功能代码:
public class Function1
{
private readonly ILogger<Function1> _logger;
private readonly IConfiguration _configuration;
private const string RawTopicNameSetting = "RawTopicName";
private const string RawSubscriptionNameSetting = "RawSubscriptionName";
private const string ServiceBusConnectionSetting = "ServiceBusConnection";
public Function1(ILogger<Function1> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
[Function(nameof(Function1))]
public async Task Run(
[ServiceBusTrigger(RawTopicNameSetting, RawSubscriptionNameSetting, Connection =ServiceBusConnectionSetting)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
_logger.LogInformation("I am Logger");
await messageActions.CompleteMessageAsync(message);
}
}
我尝试过 localsettings.json 它似乎工作正常。将密钥对值移动到 appsettings.json 文件后无法按预期工作。
我已经确保在应用程序设置的配置中正确加载值。 Azure 函数与 .net 8 隔离进程绑定的主要问题。
Appsettings.json
仅在读取秘密、密钥等设置时有效,功能代码如下:
var connectionString = _configuration["ServiceBus"]
但是在读取函数签名中的连接字符串时它不起作用,因为函数签名会在
local.settings.json
中查找环境变量,请参阅MSDOC:
ServiceBusTrigger("%queuename%", Connection = "ServiceBusConnection")
正如@Silent在SO中提到的,
在本地运行时阅读
,是Functions核心工具调试体验的一部分。
local.settings.json
在 Azure 中运行该函数时,在
FunctionApp=>Settings=>Environment Variables=>App Settings
下添加连接字符串。这提供了额外的功能,例如Key Vault 参考。
我已将服务总线连接字符串的密钥保管库引用添加为
Function App=>Environment Variables
下的应用程序设置:
ServiceBusConnection= @Microsoft.KeyVault(SecretUri=https://keyvaultname.vault.azure.net/secrets/secret2/5d1ab934e83d4762903c31f8df7551de)
我已使用您的函数代码并部署到Azure函数应用程序。
功能应用响应: