kaumnen
kaumnen

Reputation: 126

Azure API doesnt use connection string from configuration, but local one

I have connection string in azure api configuration with the same name, but when i go to api, swagger, it tells me - System.PlatformNotSupportedException: LocalDB is not supported on this platform. returning 500 status. this is how i get connection string from 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 project is on .net 5

Upvotes: 1

Views: 250

Answers (1)

Vova Bilyachat
Vova Bilyachat

Reputation: 19514

This is because you are building you configuration from file only, while you need to add AddEnvironmentVariables so it will add properties from Azure App Service Configuration

Try this:

  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;
        }

Since its in library you need add package Microsoft.Extensions.Configuration.EnvironmentVariables which contains AddEnvironmentVariables extension.

The other way to do it would be to add FrameworkReference in your project but that would bring lots of asp.net core stuff you probably dont need

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

Upvotes: 1

Related Questions