.net 6.0 webapi支持 xml返回xml json返回json

csharp 复制代码
// 添加控制器并配置格式化器
var builder = WebApplication.CreateBuilder();
builder.Services.AddControllers(options =>
{
    options.Filters.Add<ContentTypeFilter>();
    options.ReturnHttpNotAcceptable = true; // 强制要求Accept头匹配
    // 添加 XML 格式化器
    options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
    options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
})
    .AddXmlSerializerFormatters()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    });

添加筛选器

csharp 复制代码
public class ContentTypeFilter: IResultFilter
{
    public void OnResultExecuting(ResultExecutingContext context)
    {
        if (context.Result is ObjectResult objectResult)
        {
            var requestContentType = context.HttpContext.Request.ContentType;
            if (requestContentType?.Contains("application/xml") == true)
            {
                objectResult.ContentTypes.Clear();
                objectResult.ContentTypes.Add("application/xml");
            }
            else // 默认或JSON
            {
                objectResult.ContentTypes.Clear();
                objectResult.ContentTypes.Add("application/json");
            }
        }
    }

    public void OnResultExecuted(ResultExecutedContext context) { }
}
相关推荐
howard20056 小时前
2.1 掌握XML基础知识
xml·半结构化数据
我是大头鸟6 小时前
Spring 面向切面编程 XML 配置实现
xml·java·spring
Java搬码工6 小时前
Map<String,Object>转换为XML报文的方法
xml·java
hkNaruto6 小时前
【AI】让deepseek_r1 671b将draw.io对应的xml数据格式转换成markdown上可以直接渲染出来的Mermaid格式
xml·ai·draw.io
魔障阿Q6 小时前
labelimg标注的xml标签转换为yolo格式标签
xml·人工智能·python·深度学习·yolo·计算机视觉
Newfocus!12 小时前
GPU算力哪家好?GpuGeek推出高性能GPU云服务
json
雾岛听风来14 小时前
AI与.NET技术实操系列:ML.NET篇
.net
小码编匠14 小时前
.NET 快速开发企业级CMS内容管理系统,告别重复造轮子!
后端·c#·.net
晓翔仔14 小时前
利用 requestrepo 工具验证 XML外部实体注入漏洞
xml·网络安全·信息安全·渗透测试·漏洞
Evan.Pei15 小时前
JWT在.NET8 Webapi中的使用
.net