The Configuration System
Trace one config key through a stack of providers, watch the last provider added overwrite the rest, and see why an environment variable silently beats committed appsettings.json while `__` replaces the colon in env-var names.
The Options Pattern
Bind a config section onto a typed class, then choose between IOptions, IOptionsSnapshot, and IOptionsMonitor by how fresh the value must be, and see why a scoped snapshot cannot live inside a singleton.
Options Validation
Attach validation rules to bound options with data annotations or a cross-field check, move the failure from the first request to startup, and read every problem from one OptionsValidationException.
Environments & Feature Flags
Flip `ASPNETCORE_ENVIRONMENT` to watch a second appsettings file layer on and `IsDevelopment()` branches switch, then contrast that frozen deploy-time string with feature flags read per request through `IsEnabledAsync`, toggled by percentage or time-window filters without a redeploy.
Secrets Management
Move a database password out of committed appsettings.json into a plaintext User Secrets file the repo never sees, then watch the same config["Db:Password"] read null in Production until a startup-loaded Key Vault or Secrets Manager provider supplies it, ordered by the same last-writer-wins stack.