Search code examples
c#asp.net-coremicrosoft.extensions.hosting

Can not inject IOptions in service


I am trying to inject a IOptions inside a service that I created and it is always null:

public class Startup
{
    private IConfiguration configuration;
    public Startup(IConfiguration config)
    {
        this.configuration = config; //gets injected from Main method , not null !
    }
    public void ConfigureServices(IServiceCollection services)
    {

        Config config = configuration.GetSection("Config").Get<Config>();
        services.Configure<Config>(configuration);
        services.AddTransient<StatusService>();
        services.AddCors();
        services.AddOptions();

    }
}

Service

internal class StatusService
{
    private Config config;
    public StatusService(IOptions<Config>_config)
    {
      this.config=_config.Value; // _config has default fields
    }
}

P.S Config is just a POCO that gets populated in the Program.Main method using UseConfiguration extension.The configuration is parsed OK so no problems there.I get the configuration injected successfully in the Startup constructor.


Solution

  • your code should be like this:

    services.Configure<Config>(configuration.GetSection("Config"));