当前位置: 首页 > news >正文

Asp.net core appsettings.json` 和 `appsettings.Development.json`文件区别

在 ASP.NET Core 中,appsettings.jsonappsettings.Development.json配置文件的分层机制,用于支持不同环境(Environment)下的差异化配置。它们的核心区别在于:后者会覆盖前者中相同名称的配置项,且仅在 Development(开发)环境下生效


✅ 一、基本概念

1. appsettings.json

  • 主配置文件
  • 包含所有环境通用的默认配置
  • 例如:日志级别、功能开关、通用连接字符串等
{"Logging": {"LogLevel": {"Default": "Information"}},"AllowedHosts": "*","FeatureToggle": {"NewCheckout": false}
}

2. appsettings.Development.json

  • 环境特定配置文件
  • 仅当应用运行在 Development 环境时加载
  • 覆盖 appsettings.json 中同名的配置项
  • 通常用于:
    • 开启详细日志
    • 使用开发数据库
    • 启用调试功能
{"Logging": {"LogLevel": {"Default": "Debug",        // 覆盖主配置"Microsoft": "Warning"}},"ConnectionStrings": {"Default": "Server=dev-db;Database=MyApp_Dev;..." // 开发专用连接字符串},"FeatureToggle": {"NewCheckout": true        // 开发环境开启新功能}
}

🔁 二、配置加载顺序与覆盖规则

ASP.NET Core 默认通过 CreateDefaultBuilder() 按以下顺序加载配置(后加载的覆盖先加载的):

  1. appsettings.json
  2. appsettings.{Environment}.json ← 例如 appsettings.Development.json
  3. 用户机密(仅开发环境)
  4. 环境变量
  5. 命令行参数

📌 关键点
如果 appsettings.Development.jsonappsettings.json 都有 "Logging:LogLevel:Default"
开发环境下以 Development.json 的值为准


🌍 三、环境(Environment)如何确定?

应用的环境由 ASPNETCORE_ENVIRONMENT 环境变量决定:

环境变量值加载的配置文件
Developmentappsettings.json + appsettings.Development.json
Stagingappsettings.json + appsettings.Staging.json
Productionappsettings.json + appsettings.Production.json
未设置默认为 Production

设置方式示例:

✅ 开发时(Visual Studio / VS Code)
  • 默认自动设置为 Development
  • 可在 launchSettings.json 中查看/修改:
    {"profiles": {"MyApp": {"commandName": "Project","environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"}}}
    }
    
✅ 服务器部署(Linux)
export ASPNETCORE_ENVIRONMENT=Production
dotnet MyApp.dll

🛠️ 四、典型使用场景

配置项appsettings.json(通用)appsettings.Development.json(开发专用)
日志级别"Information""Debug""Trace"
数据库连接生产数据库本地 SQL Server / SQLite
外部服务地址https://api.prod.example.comhttps://localhost:5001(Mock 服务)
错误页面用户友好错误页开发者异常详细页(含堆栈)
缓存时间3600 秒0(禁用缓存,便于调试)

💡 提示:永远不要在 appsettings.Development.json 中存放生产敏感信息(如生产密钥),因为它通常会被提交到代码仓库。


🔐 五、安全建议

  • 敏感配置(如密码、密钥)不要硬编码在 JSON 文件中

    • 开发环境:使用 用户机密(Secret Manager)
      dotnet user-secrets set "ConnectionStrings:Default" "..."
      
    • 生产环境:使用 环境变量Azure Key Vault / AWS Secrets Manager
  • appsettings.Production.json 通常不提交到 Git(通过 .gitignore 忽略),而由部署流程注入。


✅ 六、总结

对比项appsettings.jsonappsettings.Development.json
作用通用默认配置开发环境覆盖配置
加载条件总是加载仅当 ASPNETCORE_ENVIRONMENT=Development
优先级高(会覆盖同名项)
是否提交到 Git通常是(但不含敏感信息)
典型内容生产安全的默认值调试友好、详细日志、本地依赖

🌟 核心思想
“通用配置放主文件,环境差异放环境文件” —— 这是 ASP.NET Core 实现“一次构建,多环境部署”的关键实践。

🔗 官方文档:Use multiple environments in ASP.NET Core

http://www.dtcms.com/a/464932.html

相关文章:

  • ICRA-2025 | 机器人具身探索导航新策略!CTSAC:基于课程学习Transformer SAC算法的目标导向机器人探索
  • ManipulationNet:开启真实世界机器人操作基准测试新时代
  • 物流公司网站模版网页设计与制作做网站
  • 北京网站 百度快照单位如何建设网站
  • 英语文章工具: 提取、过滤文章单词在线工具
  • 良策金宝AI:为光伏工程师打造专属“智能外脑”
  • 《C++ STL list 完全指南:从基础操作到特性对比,解锁链表容器高效用法》
  • 刀客doc:亚马逊广告再下一城,拿下微软DSP广告业务
  • Agent 开发设计模式(Agentic Design Patterns )第 3 章:并行化模式
  • 配电系统接地 | TT, TN-C, TNC-S,TN-S, IT
  • Qemu-NUC980(七):Timer定时器
  • 20251009
  • CanFestival 主站-NMT初始化
  • Transformer基础之注意力机制
  • 模板式网站价格网页设置快捷键
  • 重要通知:spring-ai-hunyuan 已兼容 Spring AI 稳定版!
  • 惊艳的网站工作室网页模板
  • 如何在 Spring Boot 应用中配置多个 Spring AI 的 LLM 客户端
  • 【实时Linux实战系列】实时系统的可观测性:Prometheus 与 Grafana 集成
  • HTML 元素:构建网页的基础
  • HTML应用指南:利用GET请求获取全国中国建设银行网点位置信息
  • AI编程 | 基于飞书知识库+多模态大模型,打造B站视频AI笔记自动生成系统
  • 专门做预售的网站做app需要学什么编程
  • [VoiceRAG] RAG工具集 | attach_rag_tools | _search_tool | _report_grounding_tool
  • ppo笔记2
  • 小九源码-springboot082-java旅游攻略平台
  • 从 Kotlin 编译器 API 的变化开始: 2.2.2X -> 2.3.0-Beta1
  • go中调用合约
  • 用Python可视化国庆期间旅游概况与消费趋势
  • InitLWIP() 初始化