我有一个带有多个补丁操作的 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
的包引用services.AddMvc().AddNewtonsoftJson();
你做了第二步,但第一步呢?
这对我有帮助。
不幸的是,我不知道如何在没有
.AddNewtonsoftJson()
的情况下使 JsonPatchDocument 工作
关于asp.net-core - 迁移到 .Net Core 3 后 JsonPatchDocument 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542164/