I'm implementing an Azure Function using C#/.NET 8.0. After setting up in ConfigureAppConfiguration
, I want to access in ConfigureServices
for configuring Entity Framework Core with a connection string.
It's shown here how to get configuration in a class through dependency injection. It's shown here how to get configuration using the options pattern and defining the configuration using services.AddOptions<MyConfigOptions>()
.
However, in my case, I just want to access the configuration using its key, like "ConnectionStrings:MyConnectionString"
, not by defining classes to use in conjunction with AddOptions<>
.
using System.Configuration;
using Azure.Identity;
using IAM_AssetOwnershipWatchdog.DbContexts;
using IAM_AssetOwnershipWatchdog.Services;
using Microsoft.Azure.Functions.Worker;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using ConfigurationManager = System.Configuration.ConfigurationManager;
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureAppConfiguration(builder =>
{
var environment = Environment.GetEnvironmentVariable("ENVIRONMENT") ?? "development";
builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
})
.ConfigureServices(services => {
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
services.AddDbContext<AssetOwnershipContext>(options =>
{
// How to access configuration here?
// options.UseSqlServer(...)
});
services.AddScoped<IApplicationService, ApplicationService>();
services.AddSingleton<GraphServiceClient>(sp =>
new GraphServiceClient(
new DefaultAzureCredential(new DefaultAzureCredentialOptions()
{
ExcludeSharedTokenCacheCredential = true
})
)
);
})
.Build();
host.Run();
You can use the IHostBuilder.ConfigureServices
which accepts lambda with 2 parameters, first being the HostBuilderContext
which has the Configuration
property:
var host = new HostBuilder()
.ConfigureAppConfiguration(builder => ...)
.ConfigureServices((context, services) => {
var config = context.Configuration;
//
})