Injecting IConfiguration directly into a service means magic string keys scattered everywhere and no compile-time safety. The Options pattern - IOptions, IOptionsSnapshot, and IOptionsMonitor - and when each one actually applies.
appsettings.json doesn't scale across a dozen instances that all need to pick up a config change at the same moment. Azure App Configuration as a centralized store, with dynamic refresh and feature flags, wired into a .NET app.