01. Welcome
02. What will you learn in this course
03. Who is the course for and prerequisites
04. Introduction
05. What is Configuration
06. Why configuration is important
07. Configuration in .NET
08. Configuration sources & providers
09. First Configuration NuGet package
10. Explore the IConfiguration and related APIs
11. Section Recap
12. Introduction - 2
13. Standalone vs. Host
14. Whats a ConfigurationManager
15. Exploring the Worker Service default configuration
16. Running the Worker Service with template behavior
17. Learning the JSON configuration provider capabilities
18. Environment specific configuration
19. Configuring and manually parsing custom values
20. Benefiting from the Binder package
21. Section Recap - 2
22. Introduction to Configuration Providers
23. Base File Providers
24. Discussing the empty application builder sample app
25. JSON configuration provider
26. XML configuration provider
27. INI configuration provider
28. User Secrets configuration provider
29. Managing user secrets
30. Environment Variables configuration provider
31. Command-line configuration provider
32. Key-per file configuration provider
33. Azure Key Vault configuration provider
34. Azure App Configuration provider with Key Vault secrets
35. Section Recap - 3
36. Introduction to Implementing a Custom Configuration Provider
37. Create the implementation class library
38. Implement the IConfigurationSource
39. Implement the IConfigurationProvider
40. Extend IConfigurationBuilder and expose AddYamlFile APIs
41. Implementing the YAML parser
42. Review and Finalize implementation details
43. Consuming YAML configuration with custom provider
44. Section Recap - 4
45. Introduction to the Options Pattern
46. Modeling the Logging Options
47. Bind Logging Options to Configuration
48. Consuming Logging Options through DI
49. Adding another options-modeled object
50. Binding additional named-options
51. Configuring and editing named-options
52. Resolving named-options by name
53. Verifying configuration bindings and DI hydration
54. Considering alternative APIs for registering options
55. Overriding configurations with post configure APIs
56. Overriding all config-bound instances
57. Avoid implementing IOptions
58. Understanding reflection-based binding
59. Enabling source-generated configuration binding
60. Section Recap - 5
61. Introduction to Validating Options
62. Implementing the IValidateOptions interface
63. Registering options with validation
64. Using data-annotations for declarative validation
65. Handling validation errors
66. Expressing simple delegate-based validation with fluent APIs
67. Controlling when validation errors occur
68. Compile-time validation with source-generators
69. Section Recap - 6
70. Introduction to Options Monitoring
71. Differentiating Options interfaces
72. Visualizing an Alerting App Scenario
73. Exploring the Alerting Implementation
74. Post Code-walk Options and Settings
75. Changing Config Data & Monitoring Alerts
76. Being Mindful of Monitoring Limitations
77. Section Recap - 7
78. Introduction to Consumer-Centric - Empathy-based Authoring
79. Defining Strongly-typed WidgetOptions
80. Debating namespace Naming IServiceCollection Extensions
81. Exploring an Add with IConfigurationSection API
82. Consuming the Add with IConfigurationSection
83. Improving consumer experiences through meaningful error messages
84. Confirming new consumer experiences
85. Considerations when accepting Option-types as Add API parameters
86. Consuming the Add with Options-type API
87. Exposing an Action API
88. The Importance of Consistent APIs
89. Using the configureOptions delegate-based API
90. Section Recap - 8
91. Conclusion