Функции Azure local.settings.json, представленные в appsettings.json для ServiceBusTrigger - PullRequest
0 голосов
/ 02 января 2019

В настоящее время у меня есть функция Azure, использующая привязку ServiceBusTrigger

 [ServiceBusTrigger("%TopicName%", "%SubscripionName%", Connection = "MyConnection")]
         string  catclogueEventMsgs, ILogger log, ExecutionContext context)

, которая использует этот файл local.settings.json

   "Values": {
             …
    "MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
    "SubscriptionName": "testsubscriptionName"
    "TopicName": "testtopicName",
  }

Как мне представить это в appsettings.jsonфайл.Будет ли он похож на приведенный ниже?

   "Values": {
    "MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
    "SubscriptionName": "testsubscriptionName"
    "TopicName": "testtopicName",
  }

Вместо использования объекта «Значения» я могу использовать, например, объект «MySubs», как показано ниже?

   "MySubs": {
    "MyConnection": "Endpoint=sb://testxxxxxxxxxxxxxxxxxx
    "SubscriptionName": "testsubscriptionName"
    "TopicName": "testtopicName",
  }

Если его можно использоватьвышеуказанные настройки, как мне представить это в привязке ServiceBusTrigger?я бы изменил это на это?

 [ServiceBusTrigger("%MySubs.TopicName%", "%MySubs.SubscripionName%", Connection = "MySubs.MyConnection")]
         string  catclogueEventMsgs, ILogger log, ExecutionContext context)

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Вы МОЖЕТЕ действительно прочитать настройки вне массива Values следующим образом:

WeatherApiConfig.cs

public class WeatherApiConfig
{
    public string WeatherApiUrl { get; set; }
    public string WeatherApiKey { get; set; }
}

Новое для функций Azure V2, У нас естьсоответствующий способ обработки DI , как показано ниже:

Startup.cs

[assembly: FunctionsStartup(typeof(BlazingDemo.Api.Startup))]

namespace BlazingDemo.Api
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();

            var apiConfig = new WeatherApiConfig();
            config.GetSection("WeatherApiConfig").Bind(apiConfig);

            builder.Services.AddSingleton(apiConfig);
            builder.Services.AddHttpClient();
        }
    }
}

Local.settings.json

{  
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  },
  "WeatherApiConfig": {
    "WeatherApiUrl": "http://api.openweathermap.org/data/2.5/weather",
    "WeatherApiKey": "**removed**"
  }
}

Примечание: ключом для меня было добавить .SetBasePath(Directory.GetCurrentDirectory()) в Startup.cs, так как он не мог найти файл без него.

В работе я использую раздел Application Settings приложения функции для настройки этих параметров.два свойства следующим образом:

Application Settings in Azure

0 голосов
/ 02 января 2019

Боюсь, это невозможно. Локально функция Azure считывает Values в local.settings.json файле для получения настроек, связанных с привязками.

Проверьте описание для Values в local.settings.json .

Коллекция настроек приложения и строк подключения, используемых при локальном запуске. Эти значения соответствуют настройкам приложения в вашем функциональном приложении в Azure, например, AzureWebJobsStorage и AzureWebJobsDashboard.

Многие триггеры и привязки имеют свойство, которое относится к настройке приложения строки подключения, например, «Соединение для триггера хранения BLOB-объектов». Для таких свойств вам нужен параметр приложения, определенный в массиве Values.

Для производства, то есть на сайте Azure, мы можем полагаться только на Настройки приложения для получения настроек, связанных с привязками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...