чтобы получить значение

ользую EF core 2.0 в функциях Azure, используя ядро ​​.net. Я пытаюсь прочитать БД ConnectionString из local.settings.json, который определен:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "MyDbConnStr": "Data Source=.;Initial Catalog=xxxxxxx"
  }
}

Environment.GetEnvironmentVariable () не возвращает никакой информации о строке подключения, и я не могу использовать ConfigurationManager.ConnectionStrings с ядром .net. Как мне получить доступ к строке подключения из кода?

 Boris Lipschitz19 дек. 2017 г., 00:15
@DOMZE убедитесь, что вы ссылаетесь на Sdk.Functions 1.0.6 и 2.0.0 EF. В настоящее время имеется ошибка Azure Functions .NET Core.
 Boris Lipschitz19 дек. 2017 г., 00:17
 DOMZE19 дек. 2017 г., 00:58
Вы мой друг спаситель! Огромное спасибо.
 Boris Lipschitz19 дек. 2017 г., 00:13
@DOMZE да, используя VS 2017, версия 15.5.2 с .net core 2 Шаблон функций <PropertyGroup> <TargetFramework> netstandard2.0 </ TargetFramework> <AzureFunctionsVersion> v2 </ AzureFunctionsVersion> </ PropertyGroup> <ItemGroup> <PackageReference Include = "Microsoft.EntityFrameworkCore.SqlServer" Version = "2.0.0" /> <PackageReference Include = "Microsoft.EntityFrameworkCore.Tools" Version = "2.0.0" /> <PackageReference Include = "Microsoft.NET.Sdk.Functions" Версия = "1.0.6" /> </ ItemGroup>
 DOMZE18 дек. 2017 г., 21:50
Как вы можете загрузить EFCore 2.X с помощью функций Azure локально? Я пытался, и он не может загрузить EFCore. Вы используете визуальную студию?

Ответы на вопрос(2)

Environment.GetEnvironmentVariable, Ключи являются "ConnectionStrings: YourKey"

Предполагая, что ваш local.settings.json выглядит следующим образом:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "sqldb_connection": "connection_string_here"
  }
}

использованиеEnvironment.GetEnvironmentVariable("ConnectionStrings:sqldb_connection", EnvironmentVariableTarget.Process); чтобы получить значение

Решение Вопроса

Вы можете использовать один из вспомогательных классов вMicrosoft.Azure.WebJobs.Host:

AmbientConnectionStringProvider.Instance.GetConnectionString("MyDbConnStr")

Этот класс делегирует работу внутреннему классу, называемомуConfigurationUtility, который делает что-то в соответствии с

var configuration = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .AddJsonFile("appsettings.json", true)
    .Build();
var conn = configuration.GetConnectionString("MyDbConnStr");
 Boris Lipschitz14 дек. 2017 г., 12:53
Вау! Оно работает! Спасибо! Это нигде не задокументировано. Я бы никогда не догадался об этом ...
 Smit21 дек. 2017 г., 03:07
Здесь задокументированоdocs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/... Конфигурация имеет достаточно простой механизм для загрузки конфигурации из env / json / ini.
 Jonathan16 янв. 2018 г., 22:55
Как использовать любую другую переменную конфигурации, а не строку подключения. Это не работает с пользовательскими параметрами

Ваш ответ на вопрос