.NET Core怎么读取appsettings.xml配置文件

发布时间 - 2026-01-09 00:00:00    点击率:
.NET Core 默认不支持 appsettings.xml,需安装 Microsoft.Extensions.Configuration.Xml 包并调用 AddXmlFile() 方法加载;XML 文件须符合 格式,且编码为 UTF-8(无 BOM)。

.NET Core 默认不支持 appsettings.xml 配置文件,它原生只识别 appsettings.json(以及 .ini.env 等),XML 格式需手动添加支持


✅ 正确做法:用 XmlConfigurationProvider

.NET Core 的配置系统是可扩展的,你可以通过第三方或内置方式加载 XML。从 .NET 6 开始,官方并未内置 XML 支持,但社区常用 Microsoft.Extensions.Configuration.Xml 包(由 Microsoft 官方维护)来实现。

1. 安装 NuGet 包

在项目中安装:

dotnet add package Microsoft.Extensions.Configuration.Xml

✅ 注意:该包支持 .NET Core 3.1+ 和 .NET 5/6/7/8。

2. 添加 appsettings.xml 文件

在项目根目录下创建 appsettings.xml,例如:



  
    
    
    
  

⚠️ 注意:XML 结构必须符合 格式,这是 XmlConfigurationProvider 所识别的标准格式(兼容旧版 Web.config 风格)。

3. 在 Program.cs 中注册 XML 配置源

.NET 6+(Minimal Hosting Model)示例:

var builder = WebApplication.CreateBuilder(args);

// 添加 XML 配置(放在 JSON 之后会覆盖同名项,按添加顺序决定优先级)
builder.Configuration
    .AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true);

var app = builder.Build();

如果还想保留默认的 appsettings.json,就不用删它——多个配置源会自动合并。

4. 使用配置(强类型绑定推荐)

定义配置类:

public class AppSettings
{
    public ConnectionStrings ConnectionStrings { get; set; } = new();
    public Logging Logging { get; set; } = new();
    public Feature Feature { get; set; } = new();
}

public class ConnectionStrings
{
    public string Default { get; set; } = string.Empty;
}

public class Logging
{
    public LogLevel LogLevel { get; set; } = new();
}

public class LogLevel
{
    public string Default { get; set; } = "Information";
}

public class Feature
{
    public bool EnableCache { get; set; }
}

Program.cs 中绑定:

builder.Services.Configure(builder.Configuration);

然后在 Controller 或 Service 中注入使用:

public class HomeController : Controller
{
    private readonly IOptions _settings;

    public HomeController(IOptions settings)
    {
        _settings = settings;
    }

    public IActionResult Index()
    {
        var conn = _settings.Value.ConnectionStrings.Default;
        return Content($"Conn: {conn}");
    }
}

❌ 常见误区提醒

  • appsettings.xml 不是默认支持的,不装包 + 不调用 AddXmlFile() 就读不到
  • XML 文件编码建议用 UTF-8(无 BOM),否则可能解析失败
  • key 名称区分大小写,且层级靠 : 分隔(和 JSON 一致),不是靠 XML 节点嵌套
  • 不要试图用 ConfigurationBuilder.AddXmlStream() 手动解析复杂结构——用标准 AddXmlFile 更稳

基本上就这些。XML 支持虽非开箱即用,但加一个包、一行代码就能搞定,和 JSON 体验几乎一致。


# js  # json  # 编码  # app  # microsoft  # stream  # 配置文件  # .net  # xml  # bom  # 不支持  # 绑定  # 这是  # 加载  # 放在  # 你可以  # 就能  # 多个  # 还想  # 第三方 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  智能起名网站制作软件有哪些,制作logo的软件?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  三星网站视频制作教程下载,三星w23网页如何全屏?  免费网站制作appp,免费制作app哪个平台好?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Linux系统命令中tree命令详解  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  php485函数参数是什么意思_php485各参数详细说明【介绍】  如何正确选择百度移动适配建站域名?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel如何生成URL和重定向?(路由助手函数)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  利用vue写todolist单页应用  音响网站制作视频教程,隆霸音响官方网站?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  无锡营销型网站制作公司,无锡网选车牌流程?  WordPress 子目录安装中正确处理脚本路径的完整指南  Android使用GridView实现日历的简单功能  如何用西部建站助手快速创建专业网站?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  EditPlus中的正则表达式 实战(4)  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  利用python获取某年中每个月的第一天和最后一天  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  网站页面设计需要考虑到这些问题  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何在企业微信快速生成手机电脑官网?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  免费视频制作网站,更新又快又好的免费电影网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何用VPS主机快速搭建个人网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  非常酷的网站设计制作软件,酷培ai教育官方网站?  高防服务器如何保障网站安全无虞?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  装修招标网站设计制作流程,装修招标流程?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  如何有效防御Web建站篡改攻击?