ZetCode

ASP.NET appsettings.json

最后修改于 2025 年 4 月 3 日

本文将探讨 ASP.NET 8 中的 appsettings.json 文件。该文件是现代 ASP.NET 应用程序中存储配置设置的主要方式。

ASP.NET 提供了一个灵活的配置系统,可以与各种源协同工作。appsettings.json 文件是 .NET 中默认的基于 JSON 的配置文件。

基本定义

appsettings.json 文件是 ASP.NET Core 和 .NET 应用程序中使用的 JSON 配置文件。它以结构化的格式存储应用程序设置。

appsettings.json 中的配置值可以在整个应用程序中访问。该文件支持通过 JSON 对象和数组进行分层数据组织。

ASP.NET 在应用程序启动期间会自动加载 appsettings.json。特定于环境的版本(如 appsettings.Development.json)可以根据当前环境覆盖设置。

ASP.NET appsettings.json 示例

以下示例演示了如何在具有 Web API 控制器的 ASP.NET 8 应用程序中使用 appsettings.json。

appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AppSettings": {
    "ApiKey": "abc123xyz456",
    "MaxItems": 100,
    "FeatureFlags": {
      "EnableNewSearch": true,
      "EnableExperimentalApi": false
    },
    "AllowedOrigins": [
      "https://example.com",
      "https://test.example.com"
    ]
  }
}

此 appsettings.json 文件包含标准的日志记录配置和自定义应用程序设置。AppSettings 部分演示了各种配置值类型。

Program.cs
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();

// Bind configuration to a strongly-typed class
builder.Services.Configure<AppSettings>(
    builder.Configuration.GetSection("AppSettings"));

var app = builder.Build();

app.MapControllers();
app.Run();

此 Program.cs 文件设置了应用程序,并将 AppSettings 部分绑定到一个强类型配置类。Configure 方法支持设置的依赖注入。

Models/AppSettings.cs
public class AppSettings
{
    public string ApiKey { get; set; }
    public int MaxItems { get; set; }
    public FeatureFlags FeatureFlags { get; set; }
    public string[] AllowedOrigins { get; set; }
}

public class FeatureFlags
{
    public bool EnableNewSearch { get; set; }
    public bool EnableExperimentalApi { get; set; }
}

此强类型配置类反映了 appsettings.json 中 AppSettings 部分的结构。嵌套对象由单独的类表示。

Controllers/SettingsController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;

[ApiController]
[Route("api/[controller]")]
public class SettingsController : ControllerBase
{
    private readonly AppSettings _settings;

    public SettingsController(IOptions<AppSettings> settings)
    {
        _settings = settings.Value;
    }

    [HttpGet]
    public IActionResult GetSettings()
    {
        return Ok(new
        {
            _settings.ApiKey,
            _settings.MaxItems,
            _settings.FeatureFlags,
            _settings.AllowedOrigins
        });
    }

    [HttpGet("feature-flags")]
    public IActionResult GetFeatureFlags()
    {
        return Ok(_settings.FeatureFlags);
    }
}

此控制器演示了两种访问配置设置的方法。构造函数通过 IOptions<T> 注入强类型 AppSettings。

第一个操作返回所有设置,第二个操作侧重于功能标志。IOptions<T> 模式提供了对配置值的类型安全访问。

该示例展示了如何在 appsettings.json 中组织复杂配置并在整个应用程序中访问它。强类型配置提高了代码的安全性与可维护性。

来源

Microsoft ASP.NET 配置文档

在本文中,我们探讨了 ASP.NET 8 中的 appsettings.json 文件。这个强大的配置系统支持简单和复杂的应用程序设置。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章,至今已发表超过 1,400 篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 ASP.NET 教程