I need to setup a few dependencies (services) in the ConfigureServices
method in an ASP.NET Core 1.0 web application.
The issue is that based on the new JSON configuration I need to setup a service or another.
I can't seem to actually read the settings in the ConfigureServices
phase of the app lifetime:
public void ConfigureServices(IServiceCollection services) { var section = Configuration.GetSection("MySettings"); // this does not actually hold the settings services.Configure<MySettingsClass>(section); // this is a setup instruction, I can't actually get a MySettingsClass instance with the settings // ... // set up services services.AddSingleton(typeof(ISomething), typeof(ConcreteSomething)); }
I would need to actually read that section and decide what to register for ISomething
(maybe a different type than ConcreteSomething
).
At run time, the ConfigureServices method is called before the Configure method. This is so that you can register your custom service with the IoC container which you may use in the Configure method.
That is the way you can get the typed settings from appSettings.json
right in ConfigureServices
method:
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.Configure<MySettings>(Configuration.GetSection(nameof(MySettings))); services.AddSingleton(Configuration); // ... var settings = Configuration.GetSection(nameof(MySettings)).Get<MySettings>(); int maxNumberOfSomething = settings.MaxNumberOfSomething; // ... } // ... }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With