.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建站篡改攻击?


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