gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:40:38 25 4
gpt4 key购买 nike

我有一个带有多个补丁操作的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com