我有一个Azure Function v2(.NET Core)项目,在其中创建了队列触发类型的函数。
此队列触发器属性如下所示:
public static void Run(
[QueueTrigger("myqueue-name",
Connection = "Someconnectionstring")]string myQueueItem,
ILogger log)
在上述代码段中-我想在本地运行时从myqueue-name
文件中获取local.settings.json
值,然后在应用程序设置中添加相同的配置值,并在Azure上运行时获取该值。 / p>
我搜索并找到了解决方案:Values from local.settings.json in Azure Functions
建议在%%
之间引用配置密钥-如果我使用的是Azure Function v1(.NET Framework),这可以正常工作-但不幸的是,当我使用Azure的v2 .NET Core版本时,此方法不起作用功能。在settings.json文件中的[QueueTrigger]
属性中使用可配置的值或azure中的appsettings时需要帮助
答案 0 :(得分:0)
您也可以直接访问属性声明本身。在应用程序设置中,我有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文件中添加以下代码段
var host = new JobHost(new JobHostConfiguration
{
NameResolver = new QueueNameResolver()
});
host.RunAndBlock();