用途:为 .NET 应用提供配置模式实践,包括配置来源与优先级、Options 模式绑定、校验、用户机密、按环境配置和功能开关。
主要能力: 配置来源与优先级:WebApplication.CreateBuilder 默认加载 appsettings.json、appsettings.{Environment}.json、用户机密(仅 Development)、环境变量、命令行参数,后者覆盖前者;可 AddJsonFile 添加自定义来源。 Options 模式:将配置节绑定到强类型类并经 DI 注入。类属性用 { get; set; },必填字段用数据注解 [Required]。注册示例:builder.Services.AddOptions<SmtpOptions>().BindConfiguration(SmtpOptions.SectionName).ValidateDataAnnotations().ValidateOnStart(); 接口选择:IOptions<T> 单例、启动后不重载;IOptionsSnapshot<T> 作用域、按请求重载;IOptionsMonitor<T> 单例、支持实时重载与 OnChange 变更通知。 校验:支持数据注解与 IValidateOptions<T> 复杂校验,建议配合 ValidateOnStart() 在启动时快速失败。 用户机密:dotnet user-secrets init / set / list / clear,存放于 ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json,仅用于开发,生产应改用环境变量或密钥保管服务。 环境配置:环境变量层级键使用双下划线分隔,如 Smtp__Host 映射为 Smtp:Host;通过 ASPNETCORE_ENVIRONMENT 或 DOTNET_ENVIRONMENT 指定环境,未设置默认为 Production;可按环境文件与 IsDevelopment() 条件注册服务。 功能开关:dotnet add package Microsoft.FeatureManagement.AspNetCore 后 AddFeatureManagement(),配置节 FeatureManagement 支持 Percentage、TimeWindow、Targeting 过滤器及自定义 IFeatureFilter;可用 IFeatureManager.IsEnabledAsync 或 [FeatureGate] 特性控制端点。 其他:支持命名 Options(同一类型多实例)与 PostConfigure 后置处理;可用内存配置构建器进行绑定与校验单元测试。
限制:生产环境不应使用用户机密;配置错误若不调用 ValidateOnStart 仅在首次访问 Value 时抛出;具体平台与收费信息暂未提供。