.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) { }
}
相关推荐
时光追逐者34 分钟前
一个基于 .NET 开源、功能强大的分布式微服务开发框架
分布式·微服务·开源·c#·.net·.net core
步步为营DotNet1 小时前
深入探究.NET中依赖注入(DI)的生命周期管理:构建稳健且高效的应用
.net
步步为营DotNet3 小时前
深度解析.NET中LINQ查询的延迟执行与缓存机制:优化数据查询性能
缓存·.net·linq
武藤一雄5 小时前
一款基于WPF开发的BEJSON转换工具
windows·c#·json·wpf
联系QQ 180809517 小时前
基于SVPWM改进的异步电机/感应电机直接转矩控制:解决传统DTC转矩纹波大的问题“ 参考文...
json
娱乐我有7 小时前
北京深梵科技公益捐赠二十万 赋能流浪动物温暖过冬
人工智能·科技·json
charlee447 小时前
使用cpp-httplib发布HTTP服务
c++·http·json·cpp-httplib
就是有点傻9 小时前
ASP.NET Core Web API中的launchSettings.json介绍
json·asp.net
小北方城市网9 小时前
第2课:零基础前端框架实操入门——从核心语法到第一个完整项目
javascript·ai·正则表达式·json·html5