API Azure использует не строку подключения из конфигурации, а локальную

#azure #asp.net-web-api #connection-string #azure-api-management

Вопрос:

У меня есть строка подключения в конфигурации api azure с тем же именем, но когда я захожу в api, swagger, она сообщает мне — System.PlatformNotSupportedException: LocalDB is not supported on this platform. возвращает статус 500. вот как я получаю строку подключения из api:

 private string _connectionString = string.Empty;

        public string GetConnectionString(string name)
        {
            var configurationBuilder = new ConfigurationBuilder();
            var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json");
            configurationBuilder.AddJsonFile(path, false);

            var root = configurationBuilder.Build();
            _connectionString = root.GetSection("ConnectionStrings").GetSection(name).Value;
            var appSetting = root.GetSection("ApplicationSettings");

            return _connectionString;
        }
 

Проект API находится на .net 5

Ответ №1:

Это связано с тем, что вы создаете конфигурацию только из файла, в то время как вам нужно добавить AddEnvironmentVariables , чтобы она добавляла свойства из конфигурации службы приложений Azure

Попробуйте это:

   public string GetConnectionString(string name)
        {
            var path = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json");
            var root = new ConfigurationBuilder()
                .AddJsonFile(path, false)
                .AddEnvironmentVariables()
                .Build();

            _connectionString = root.GetSection("ConnectionStrings").GetSection(name).Value;
            var appSetting = root.GetSection("ApplicationSettings");

            return _connectionString;
        }
 

Так как он находится в библиотеке, вам нужно добавить пакет Microsoft.Extensions.Configuration.EnvironmentVariables , содержащий AddEnvironmentVariables расширение.

Другой способ сделать это-добавить ссылку на фреймворк в ваш проект, но это принесет много asp.net основные вещи, которые вам, вероятно, не нужны

   <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
 

Комментарии:

1. В нем говорится, что IConfigurationBuilder не содержит определения для AddEnvironmentVariables

2. попробуйте добавить пространство имен с помощью Microsoft. Расширения. Конфигурация;

3. @komnen это код в проекте librarry или webapi?

4. Это в библиотеке правка: О, может ли это быть проблемой? Я еще не опубликовал свою библиотеку

5. @komnen готово. Спрашивайте, есть ли у вас еще какие-либо вопросы