Z
ZHANK
编程在线教程C# 教程配置与选项模式
进阶工程

配置与选项模式

appsettings.json、IOptions<T>、环境变量、User Secrets

配置与选项模式

appsettings.jsonIOptions<T> → 强类型配置。这是 .NET 的标准配置流程。

学完本章你将: 掌握 appsettings.json、IOptions、环境变量覆盖。


appsettings.json

json
{
    "AppName": "MyApp",
    "Database": {
        "ConnectionString": "Server=localhost;Database=mydb",
        "MaxRetries": 3
    },
    "Email": {
        "SmtpHost": "smtp.example.com",
        "Port": 587
    }
}

选项模式 IOptions

csharp
// 定义配置类
public class DatabaseOptions
{
    public const string SectionName = "Database";
    public string ConnectionString { get; set; } = "";
    public int MaxRetries { get; set; } = 3;
}

// 注册
builder.Services.Configure<DatabaseOptions>(
    builder.Configuration.GetSection(DatabaseOptions.SectionName));

// 使用
public class UserService
{
    public UserService(IOptions<DatabaseOptions> options)
    {
        var connStr = options.Value.ConnectionString;
        var retries = options.Value.MaxRetries;
    }
}

环境变量覆盖

bash
# 环境变量自动覆盖 appsettings.json——生产环境核心机制
export Database__ConnectionString="Server=prod;..."
export Database__MaxRetries=5

# __ 双下划线 → JSON 层级
# Database:ConnectionString = Database__ConnectionString