Start here. This is the direct spoken answer to practice first.
Why this question matters
ASP.NET Core composes configuration from several providers into one key space. A correct value can still lose to a later provider, so debugging needs the source order as well as the final value.
When providers contain the same key, the provider added later normally wins. The default application builder typically combines JSON files, environment-specific JSON, development secrets, environment variables, and command-line arguments in an intentional order. Environment variables use conventions such as double underscores for nested keys. I keep non-secret defaults in source-controlled files, environment-specific values outside the artifact, and secrets in a managed secret source rather than ordinary JSON or logs.