asp.net-core - 迁移到 .Net Core 3 后 JsonPatchDocument 为空

标签 asp.net-core .net-core json.net .net-core-3.0 json-patch

我有一个带有多个补丁操作的 AspNetCore-WebApi-Project,它在 Core 2.2 中运行良好。迁移到 Core 3 后 [FromBody] JsonPatchDocument<T>一片空白。我的获取/发布方法仍然按预期运行。

这是我的 Startup 的一部分:

    services.AddDbContext<MyContext>(options => options
                    .UseLazyLoadingProxies()
                    .UseNpgsql(Configuration.GetConnectionString("MyConnectionString"), 
                        opt => opt.UseNodaTime()));

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My-API", Version = "v1" });
    });
    services.AddControllers()
        .AddNewtonsoftJson();

这是我的行动:
[HttpPatch("{id}")]
public async Task<IActionResult> Patch(Guid id, 
                            [FromBody] JsonPatchDocument<MyViewModel> patchDocument)
{
    await this.service.HandlePatchAsync(id, patchDocument);
    return NoContent();
}

这是正文内容:
[   
    {
        "op": "replace",
        "path": "/name",
        "value": "New Name" 
    },
    {
        "op": "replace",
        "path": "/country",
        "value": "Germany" 
    }
]

有谁知道这里出了什么问题?

最佳答案

我在一个类似的问题上挣扎。我打算摆脱Newtonsoft完全没有,但在那种情况下,补丁带有 JsonPatchDocument没有工作。

根据 https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#jsonnet-support你应该:

  • 添加对 Microsoft.AspNetCore.Mvc.NewtonsoftJson 的包引用
  • 将启动添加MVC中的代码更改为services.AddMvc().AddNewtonsoftJson();

  • 你做了第二步,但第一步呢?
    这对我有帮助。

    不幸的是,我不知道如何在没有 .AddNewtonsoftJson() 的情况下使 JsonPatchDocument 工作

    关于asp.net-core - 迁移到 .Net Core 3 后 JsonPatchDocument 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542164/

    相关文章:

    c# - Kestrel::通过 appsettings.json 绑定(bind)到多个 HTTP 和 HTTPS url

    asp.net-mvc - 在 MVC Core 1.0 中我可以不再将 ViewData 传递给 _Layout.cshtml 吗?

    c# - System.Messaging.dll 在 .Net Core 中不可用吗?

    c# - 在 .net 核心中使用构造函数参数进行依赖注入(inject)

    mysql - 如何在 Entity Framework Core 1.0.1 原始查询中包含相关实体?

    asp.net - 如何过滤 Linux 上托管的 ASPNET 核心应用程序的 Journalctl 日志错误

    c# - 我可以在 .NET Core 可执行文件中嵌入文件并在运行时读取它吗?

    c# - 使用属性将枚举序列化为 JSON.NET 中的字符串

    c# - 通过 json 将 javascript 数组传递给 C#

    c# - Json.NET 基本类型 - 使用 Decimal 而不是 Double