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

.NET 7独立进程Azure Function启用Newtonsoft.Json失败求助

解决.NET 7独立进程Azure Function中Newtonsoft.Json [JsonProperty]特性失效问题

问题根源

独立进程模式的Azure Functions默认使用System.Text.Json处理序列化,且ASP.NET Core MVC的配置(如AddMvcCore().AddNewtonsoftJson())不会影响Function Worker的序列化逻辑——这就是[JsonProperty]被忽略、[JsonPropertyName]却能正常生效的核心原因。

解决方案

1. 安装正确的NuGet包

卸载多余的Microsoft.AspNetCore.Mvc.NewtonsoftJson,安装专门针对独立进程Function的Newtonsoft扩展包:

Install-Package Microsoft.Azure.Functions.Worker.Extensions.Http.NewtonsoftJson -Version 7.0.1

(版本号需匹配.NET 7,可根据实际情况调整)

2. 配置Function Worker使用NewtonsoftJson

修改Program.cs中的HostBuilder配置,替换默认序列化器为NewtonsoftJson:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(builder =>
    {
        // 启用NewtonsoftJson处理Http请求/响应的序列化
        builder.UseNewtonsoftJson();
    })
    .ConfigureServices((context, services) =>
    {
        // 可选:自定义NewtonsoftJson序列化配置
        services.Configure<NewtonsoftJsonSerializerOptions>(options =>
        {
            // 保留默认契约解析器,确保[JsonProperty]特性生效
            options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
            // 可添加其他配置,如忽略空值、设置日期格式等
            // options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
        });
    })
    .Build();

host.Run();

3. 验证返回逻辑

保持你的AuthResponse类和Login函数代码不变,重新运行Function,[JsonProperty("extended_status_code")]特性会正常生效,返回的JSON字段名将替换为指定值。

关键说明

独立进程Function的序列化逻辑由Microsoft.Azure.Functions.Worker控制,而非ASP.NET Core MVC管道,因此必须通过ConfigureFunctionsWorkerDefaults配置序列化器,而非Mvc相关的扩展方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:33:19