WebApi NET Core 不接收请求 json,而它在 NET 标准中接收
Posted
技术标签:
【中文标题】WebApi NET Core 不接收请求 json,而它在 NET 标准中接收【英文标题】:WebApi NET Core not receiving request json, whereas it does in NET standard 【发布时间】:2021-08-27 03:14:55 【问题描述】:我创建了一个 NET Core 入门 WebApi 项目并添加了一个非常简单的方法/对象。使用 Fiddler 测试端点,请求正文不会绑定到 post 参数。我花了 2 个小时寻找解决方案无济于事。为简洁起见,我将我的对象包含在控制器中。
namespace CoreWebApi.Controllers
using Microsoft.AspNetCore.Mvc;
[Route("[controller]")]
[ApiController]
public class ValuesController : ControllerBase
[HttpPost]
public Message Post([FromBody]Message message)
return message;
public class Message
public string Application;
public string StatusOverride;
经过一番摸索后,我创建了一个 NET Standard web api 启动项目,复制/粘贴我的方法和对象,并且第一次工作!想知道是否有人可以告诉我我需要在我的 NET 核心 webapi 上做什么才能使其正常工作。
using System.Web.Http;
namespace WebApplication9.Controllers
public class ValuesController : ApiController
public Message Post([FromBody]Message message)
return message;
public class Message
public string Application;
public string StatusOverride;
【问题讨论】:
如果你继承自ApiController
而不是ControllerBase
会发生什么
***.com/questions/38667445/… No more need to define [FromBody], [FromRoute], ... attributes explicitly
工作中的 .NET Standard 部分无关紧要...您确定与生成的内容相比,您没有在 Startup.cs
中进行任何更改吗?同时将 using
放在文件顶部...如果它不起作用 - 将项目发布到 GitHub
ApiController 在 System.Web 命名空间中 (***.com/questions/40912473/…)
@AndrewE - Microsoft 从ControllerBase
生成继承。你为什么建议改变它?!
【参考方案1】:
即使类成员是公共的,他们仍然需要拥有 get/set 访问器:
public class Message
public string Application get; set;
public string StatusOverride get; set;
...它的工作原理!
【讨论】:
完美。我认为这是我唯一没有尝试过的事情! :) 感谢您的观看。以上是关于WebApi NET Core 不接收请求 json,而它在 NET 标准中接收的主要内容,如果未能解决你的问题,请参考以下文章
.net core WebAPI+EF 动态接收前台json,并动态修改数据库
.Net Core WebAPI 利用 IActionFilter 实现请求缓存
.Net Core WebAPI 利用 IActionFilter 实现请求缓存