Как прочитать значения конфигурации из файла settings.json в функции Azure на основе ядра dotnet в атрибуте триггера - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть проект Azure Function v2 (.NET Core), в котором я создал функцию типа триггера очереди.

Этот атрибут триггера очереди выглядит следующим образом:

public static void Run(
          [QueueTrigger("myqueue-name",
          Connection = "Someconnectionstring")]string myQueueItem,
       ILogger log)

Inприведенный выше фрагмент кода - я хочу получить значение myqueue-name из файла local.settings.json при локальном запуске, а затем добавить то же значение конфигурации в настройках приложения и получить это значение при работе в Azure.

Я ищу инашел решение: Значения из local.settings.json в функциях Azure

Он предлагает обратиться к ключу конфигурации между %% - это прекрасно работает, если я использую функцию Azure v1 (.NET Framework) - но, к сожалению, не работает, когда я использую версию Azure v2 .NET Core.Нужна помощь в использовании настраиваемых значений в атрибуте [QueueTrigger] из файла settings.json или настроек приложения в azure

1 Ответ

0 голосов
/ 26 декабря 2018

Вы также можете напрямую получить доступ в самом объявлении атрибута.В настройках приложения у меня есть 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 добавьте приведенный ниже блок

var host = new JobHost(new JobHostConfiguration
{
  NameResolver = new QueueNameResolver()
});
host.RunAndBlock();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...