You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Minimal API如何配置以接受Content-Type为text/json的请求?

.NET 8 Minimal API如何配置以接受Content-Type为text/json的请求?

嘿,这个问题我之前碰到过,处理起来挺简单的——默认情况下.NET的JSON输入格式化器只认application/json,所以当请求头是text/json时,服务器就会返回415错误。我们只需要给格式化器新增对text/json的支持就行,全局配置一次就能搞定所有端点。

直接在你的Program.cs里加上这段配置:

var builder = WebApplication.CreateBuilder(args);

// 重点:配置JSON格式化器支持text/json媒体类型
builder.Services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(options =>
{
    var textJsonMediaType = new Microsoft.Net.Http.Headers.MediaTypeHeaderValue("text/json");
    // 找到默认的SystemTextJson输入格式化器
    var jsonInputFormatter = options.InputFormatters.OfType<SystemTextJsonInputFormatter>().FirstOrDefault();
    if (jsonInputFormatter != null)
    {
        // 添加text/json到支持的媒体类型列表
        jsonInputFormatter.SupportedMediaTypes.Add(textJsonMediaType);
    }
});

// 剩下的是你原本的配置,比如Swagger、端点定义等
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

// 示例端点,测试用
app.MapPost("/api/echo", (YourRequestModel model) =>
{
    return Results.Ok(model);
})
.WithName("EchoRequest")
.WithOpenApi();

app.Run();

// 示例请求模型,根据你的实际业务替换
public record YourRequestModel(string Message, int Id);

配置完成后,你的Minimal API就能同时处理Content-Type: application/json和Content-Type: text/json的请求了。如果之后需要支持其他类似的JSON媒体类型(比如text/javascript),用同样的方法添加对应的MediaTypeHeaderValue就行。

备注:内容来源于stack exchange,提问作者MRP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:50:29