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

.NET 9 Azure Functions JSON参数大小写匹配问题求助

.NET 9 Azure Functions JSON大小写忽略失效解决方案

问题根源

Azure Functions使用ConfigureFunctionsWebApplication时,默认的JSON序列化配置并未完全覆盖函数参数绑定的反序列化逻辑,导致小写属性名的JSON请求无法正确映射到实体类属性,出现值被设为默认值(如0)的情况。

可行方案

1. 全局配置Worker级别的JSON序列化选项

在Program.cs中,通过配置WorkerOptions指定函数工作进程使用的序列化器,确保大小写忽略规则生效:

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication(builder =>
    {
        builder.Services.Configure<WorkerOptions>(options =>
        {
            options.Serializer = new JsonObjectSerializer(new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true,
                // 可按需添加其他序列化配置,如WriteIndented等
            });
        });
    })
    .Build();

host.Run();

2. 显式指定反序列化选项

如果全局配置未生效,可在函数参数反序列化时直接指定JsonSerializerOptions,以Math.cs中的函数为例:

[FunctionName("Add")]
public async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
    ILogger log)
{
    var requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    // 反序列化时启用大小写忽略
    var addRequest = JsonSerializer.Deserialize<AddRequest>(requestBody, 
        new JsonSerializerOptions { PropertyNameCaseInsensitive = true });

    if (addRequest == null)
    {
        return new BadRequestObjectResult("Invalid request body");
    }

    var result = addRequest.Number1 + addRequest.Number2;
    return new OkObjectResult(new { Result = result });
}

3. 使用[FromBody]特性绑定参数(推荐)

直接绑定实体类参数时,添加[FromBody]特性并配合全局配置:

[FunctionName("Add")]
public IActionResult Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] 
    [FromBody] AddRequest request,
    ILogger log)
{
    if (request == null)
    {
        return new BadRequestObjectResult("Invalid request body");
    }

    var result = request.Number1 + request.Number2;
    return new OkObjectResult(new { Result = result });
}

4. 更新Functions SDK包

确保项目中Microsoft.Azure.Functions.Worker和Microsoft.Azure.Functions.Worker.Extensions.Http包为最新稳定版,规避早期.NET 9版本的配置bug。

内容的提问来源于stack exchange,提问作者SuperMe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:42:40