it-swarm.com.ru

Загрузка строки подключения из файла конфигурации в функции Azure

В моей функции Azure я использую библиотеку, которая устанавливает соединение с сервером SQL через ConnectionString из ConfigurationManager, например:

var cs = System.Configuration.ConfigurationManager.ConnectionStrings["DbConString"].ConnectionString;
DbConnection connection = new SqlConnection(cs);

Теперь, когда я устанавливаю строку подключения DbConString на портале через Настройки приложения, все работает нормально. Но для локальной разработки я использую Azure-functions-cli и, к сожалению, я не знаю, куда мне поместить строку подключения, чтобы она была правильно загружена через ConfigurationManager. 

Я пытался поместить его в файл appsettings.json, но безуспешно. 

Правка: Мой appsettings.json в настоящее время выглядит так:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": "",
    "MyServiceBusReader": "Endpoint=sb://xxxx=",
    "DbConStr1": "data source=(localdb)\\MSSQLLocalDB;initial catalog=MyDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework",
    "ConnectionStrings": {
      "DbConStr2": "data source=(localdb)\\MS..." 
    } 
  }
}

Но я не могу получить доступ к «DbConStr1» через ConfigurationManager. Добавление «DbConStr2» в «ConnectionStrings», как описано здесь , приводит к ошибке компиляции. Может быть, потому что я не использую .NET Core?

Edit2: Я испортил вложенность "ConnectionStrings". Он должен быть на том же уровне вложенности, что и «Значения»:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": "",
    "MyServiceBusReader": "Endpoint=sb://xxxx="
  },
  "ConnectionStrings": {
    "DbConStr": "data source=(localdb)\\MS..." 
  }
}
5
officer

Проблема заключалась в том, что строка соединения известна, например, из файл Web.config состоит из двух частей: 

  • Сама строка подключения и 
  • имя провайдера. 

Но так как файл конфигурации использует формат JSON, было невозможно указать оба параметра. 

В то время, когда вопрос задавался, было невозможно установить имя провайдера в appsetings.json (теперь переименованный в local.settings.json). Но команда Azure-Functions изменила это и установила значение по умолчанию для providerName в System.Data.SqlClient, что решило проблему.

providerName по умолчанию System.Data.SqlClient. Вам не нужно устанавливать его вручную. Просто добавьте строку подключенияXи прочитайте ее с помощью ConfigurationManager.ConnectionStrings["X"].

0
officer

Добавить файл local.setting.json

 enter image description here

  {
    {
      "IsEncrypted": false,
       "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "AzureWebJobsDashboard": "UseDevelopmentStorage=true",

      "tenantId": "You tenantId",
      "resource": "https://management.Azure.com/",
      "ClientSecret": "You ClientSecret, Key from App Registry",
      "ClientId": "You ClientId, Application ID from App registry",

      "subscriptionId": "You subscriptionId",
      "resourceGroupName": "Your resourceGroupName",
      "serverName": " Your SQL Server",
      "databaseNameDW": "Your Database",
      "apiversion": "2017-10-01-preview"      
    }
}

В коде C # используйте: 

private readonly static string tenantId = ConfigurationManager.AppSettings["tenantId"];
2
Israel Calderon

У меня была такая же проблема, и я использую стандарт .net (в отличие от ядра). Я добавил свои настройки в раздел «Настройки приложения» моей функции Azure (на портале Azure): -

 enter image description here

Затем я скачал Zip функции: -  enter image description here

В эту загрузку включена копия файла local.settings.json, в котором содержатся настройки моего приложения в правильном формате json. Затем я получаю к ним доступ через ConfigurationManager.Appsettings ["mysetting"] 

1
Stephen Garside

Вы должны иметь возможность управлять настройками конфигурации с помощью файла appsettings.json в структуре вашего проекта. Вы можете посмотреть здесь пример структуры папок для функций Azure.

Кроме того, ссылка this будет содержать некоторые сведения о том, как управлять параметрами конфигурации с помощью .NET Core.

0
awh112