我有一个 Azure Function v2 (.NET Core) 项目,在其中创建了队列触发器类型的函数。
此队列触发器属性如下所示:
public static void Run(
[QueueTrigger("myqueue-name",
Connection = "Someconnectionstring")]string myQueueItem,
ILogger log)
在上面的代码片段中 - 我想在本地运行时从 local.settings.json
文件中获取 myqueue-name
值,然后在中添加相同的配置值应用程序设置并在 azure 上运行时获取该值。
我搜索并找到了解决方案:Values from local.settings.json in Azure Functions
它建议引用 %%
之间的配置键 - 如果我使用 Azure Function v1 (.NET Framework),这可以正常工作 - 但不幸的是,当我使用 v2 .NET 时,这不起作用Azure 函数的核心版本。需要帮助使用 settings.json 文件或 azure 中的 appsettings 中的 [QueueTrigger]
属性中的可配置值
最佳答案
您也可以直接在属性声明本身中访问。在应用程序设置中,我有 serviceBusConnectionString
并且我还在代码中使用队列触发器
public static async void Run([ServiceBusTrigger("orders", Connection = "serviceBusConnectionString")] Message myMessage, ILogger log)
{
//DoSomething
}
编辑2: 因此,如果您还希望从 appSettings 获取队列名称,只需创建一个 INameResolver 即可解析 %(百分号)符号包围的任何字符串。
public static async void Run([ServiceBusTrigger("%orders%", Connection = "serviceBusConnectionString")] Message myMessage, ILogger log)
{
//DoSomething
}
并编写一个像这样的解析器方法
public class QueueNameResolver : INameResolver
{
public string Resolve(string name)
{
return ConfigurationManager.AppSettings[name].ToString();
}
}
然后在您的 Program.cs 文件中添加以下 block
var host = new JobHost(new JobHostConfiguration
{
NameResolver = new QueueNameResolver()
});
host.RunAndBlock();
关于c# - 如何在触发器属性中基于 dotnet core 的 Azure 函数中读取 settings.json 中的配置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53894396/