register strongly-typed appsettings*.json

This commit is contained in:
Collin M. Barrett 2019-07-01 09:15:20 -05:00
parent 38df36911a
commit 49c3ecc539
6 changed files with 42 additions and 14 deletions

View file

@ -25,6 +25,7 @@
**/.github
**/docker-compose.dcproj
**/*.DotSettings*
**/appsettings*.json
**/node_modules
**/*.md
LICENSE

5
.gitignore vendored
View file

@ -42,9 +42,10 @@ Generated\ Files/
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
@ -348,5 +349,5 @@ healthchecksdb
MigrationBackup/
# FilterLists Custom Ignores
appsettings*.json
appsettings.*.json
src/FilterLists.Web/wwwroot/dist

View file

@ -0,0 +1,7 @@
namespace FilterLists.Agent.AppSettings
{
public class ApplicationInsights
{
public string InstrumentationKey { get; set; }
}
}

View file

@ -1,33 +1,40 @@
using FilterLists.Agent.Core.Interfaces;
using FilterLists.Agent.AppSettings;
using FilterLists.Agent.Core.Interfaces;
using FilterLists.Agent.Infrastructure.Clients;
using FilterLists.Agent.Infrastructure.Repositories;
using MediatR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace FilterLists.Agent.Extensions
{
public static class ServiceCollectionExtensions
{
public static void RegisterAgentServices(this IServiceCollection serviceCollection)
public static void RegisterAgentServices(this IServiceCollection services)
{
var configurationRoot = BuildConfigurationRoot();
serviceCollection.AddLogging(b =>
services.AddConfiguration();
services.AddLogging(b =>
{
b.AddConsole();
b.AddApplicationInsights(configurationRoot["ApplicationInsights:InstrumentationKey"] ?? "");
var appInsightsKey = b.Services.BuildServiceProvider().GetService<IOptions<ApplicationInsights>>().Value
.InstrumentationKey;
b.AddApplicationInsights(appInsightsKey);
});
serviceCollection.AddMediatR(typeof(Program).Assembly);
serviceCollection.AddHttpClient<AgentHttpClient>();
serviceCollection.AddSingleton<IConfiguration>(configurationRoot);
serviceCollection.AddSingleton<IFilterListsApiClient, FilterListsApiClient>();
serviceCollection.AddTransient<IListInfoRepository, ListInfoRepository>();
services.AddMediatR(typeof(Program).Assembly);
services.AddHttpClient<AgentHttpClient>();
services.AddSingleton<IFilterListsApiClient, FilterListsApiClient>();
services.AddTransient<IListInfoRepository, ListInfoRepository>();
}
private static IConfigurationRoot BuildConfigurationRoot()
private static void AddConfiguration(this IServiceCollection services)
{
return new ConfigurationBuilder().AddEnvironmentVariables().Build();
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.AddJsonFile("appsettings.json", true, true)
.Build();
services.Configure<ApplicationInsights>(config.GetSection(nameof(ApplicationInsights)));
}
}
}

View file

@ -35,6 +35,7 @@
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.3" />
<PackageReference Include="Microsoft.DotNet.Analyzers.Compatibility" Version="0.2.12-alpha" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
@ -45,4 +46,10 @@
<PackageReference Include="SharpCompress" Version="0.23.0" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View file

@ -0,0 +1,5 @@
{
"ApplicationInsights": {
"InstrumentationKey": "test"
}
}