.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) { }
}
相关推荐
小码编匠3 小时前
C# 上位机开发怎么学?给自动化工程师的建议
后端·c#·.net
cdbqss14 小时前
VB.net编写的身份证类
前端·.net
ChaITSimpleLove4 小时前
.NET9 实现字符串拼接(StringConcatenation)性能测试
.net·性能测试·字符串拼接·csharp·string 拼接·benchmarktest
椰椰椰耶9 小时前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
小码编匠12 小时前
WPF 自定义分页控件,可通过样式模板修改外观
后端·c#·.net
ajassi200014 小时前
开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用
linux·开源·c#·mvc·.net
Eiceblue1 天前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
步、步、为营1 天前
.net开源库SignalR
开源·.net
旷世奇才李先生1 天前
XML Schema 安装使用教程
xml
追逐时光者1 天前
一款开源免费、通用的 WPF 主题控件包
后端·.net