c# - 如何在触发器属性中基于 dotnet core 的 Azure 函数中读取 settings.json 中的配置值

标签 c# azure .net-core azure-functions azure-functions-core-tools

我有一个 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
   }

enter image description here

编辑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/

相关文章:

sql-server - Azure SQL 数据库(S0 层)-如何成功终止进程

azure - 当数据已存在时,使用客户管理的 key 加密 Azure 服务总线

.net - Resharper 未运行 xUnit 测试

c# - Lambda 表达式不正确

security - 如果我不控制身份验证服务,如何使用不记名 token 保护 API 服务

c# - ASP.NET MVC : Tabs ASCX - Adjust CSS class based on current page?

c# - 将 DbContext 添加到所有类,而不仅仅是 .NET Core 中的 Controller

c# - ASP.NET Core 2.2 Web API 没有命中任何已配置的路由,这是为什么?

c# - 在 Asp.net MVC 中哪里运行初始化代码

c# - 仍然对 C# 中与 GetAwaiter 和 GetResult 一起使用的 ConfigureAwait(false) 感到困惑。遇到死锁或方法不返回