I am trying to read configuration from appsettings.json but I am getting null when I run my application

45 Views Asked by At

Here is my code:

public class YouTubeShowsServices 
{
    private IConfiguration _config;
    
    string YouTubeApiKey;
    string YoutubeAppName;
    string YoutubePlaylistId;

    public YouTubeShowsServices(IConfiguration configuration)
    {
        _config = configuration;

        YouTubeApiKey =_config["YouTube:Key"];
        YoutubeAppName = _config["YouTube:AppName"];
        YoutubePlaylistId = _config["YouTube:PlayListId"];
    }

The variables YouTubeApiKey, YouTubeAppName and YoutubePlaylistId are getting set to null.

Here is my appsettings.json:

"YouTube": 
{
    "Key": "AIzaSyDmGZCNbxkhmS5FW-FEhzK94z0J1WWVavE",
    "PlayListId": "PLwW36SAh95SUivPyG1eUxLM8v4rjwnEfT",
    "AppName": "LiveStandup"
}

I am trying to read the configuration from appsettings.json, but my variables end up being null - can anyone help me with this code?

1

There are 1 best solutions below

0
Jaydev Kanzariya On
  1. Add NuGet Package:

    To include the required NuGet package, use the following command:

    NuGet: Install-Package Microsoft.Extensions.Configuration.Binder
    
  2. Consolidate Controller Configuration:

    Consolidate the desired controller configuration under a single category, such as "EmailSettings", in the appsettings.json file:

    {
      "EmailSettings": {
        "EmailTemplatesPath": "EmailTemplates",
        "Email": "[email protected]"
      }
    }
    

    Step 3:

    Create a class named EmailSettings.cs within your Web API project:

    public class EmailSettings
    {
        public string EmailTemplatesPath { get; set; }
        public string Email { get; set; }
    }
    

    Step 4:

    Associate your configuration values with an instance of the EmailSettings class in Startup.cs, and inject this object into the Dependency Injection container:

    In Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
        EmailSettings emailSettings = new EmailSettings();
        Configuration.GetSection("EmailSettings").Bind(emailSettings);
        services.AddSingleton(emailSettings);
    }
    

    Step 5:

    You can now easily include your configuration in the constructor of the API controller to make a request:

    Example controller for Web API:

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly EmailSettings _emailSettings;
    
        public ValuesController(EmailSettings emailSettings)
        {
            _emailSettings = emailSettings;
        }
    
        // Other controller methods...
    }
    

    Now, your ValuesController has access to the EmailSettings configured in your appsettings.json file.