Azure функция доступа к строке подключения из конфигурации - PullRequest
0 голосов
/ 02 апреля 2020

Я разместил Azure Функция V3 в среде Azure Linux. Я пытаюсь прочитать строку подключения из раздела конфигурации. Но я не понимаю. Я попытался поместить строку подключения в обе секции: Application Settings, а также Connection Strings, как показано ниже.

enter image description here

Я использую внедрение зависимостей и мой класс Startup выглядит следующим образом.

using BHD.Data.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;

[assembly: FunctionsStartup(typeof(BHD.AzureFunctions.Startup))]
namespace BHD.AzureFunctions
{
    class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var sqlConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            builder.Services.AddDbContext<ApplicationDbContext>(
                options => options.UseSqlServer(sqlConnection));
        }
    }
}

Я получаю NullPointerException на ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString, даже если строка подключения существует в файле local.settings.json, как показано ниже.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "DefaultConnection": "<My connection string>"
  }
}

1 Ответ

1 голос
/ 02 апреля 2020

Способ получения конфигурации в Azure Функции 2+ - это IConfiguration, а не ConfigurationManager.

. Вы можете ввести IConfiguration в большинство мест, где вы можете ввести что-либо еще, но в Startup() вместо этого вам нужно использовать что-то вроде этого трюка .

IConfiguration автоматически прочитает из настроек вашего приложения функций при хостинге в Azure и ваш local.settings.json при локальном запуске .


Редактировать (ссылки):

Документация по этому вопросу ИМХО не ясна и не проста для поиска. На GitHub также много дискуссий и путаницы.

Основным источником является DI в Azure Функции 2 . В нем большинство того, что вам нужно знать, почти легко пропустить:

Хост функции регистрирует множество сервисов. Следующие службы безопасны для использования в качестве зависимости в вашем приложении:

[...] Microsoft.Extensions.Configuration.IConfiguration [...]

Это также, в Рабочая с параметрами и настройками говорит:

Значения, определенные в настройках приложения, доступны в экземпляре IConfiguration

Хост делает это за вас; вам не нужно ничего делать, и, как указано выше, он автоматически получает настройки из правильного источника в зависимости от контекста вашего хостинга.

...