【发布时间】: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会发生什么 -
stackoverflow.com/questions/38667445/…
No more need to define [FromBody], [FromRoute], ... attributes explicitly -
工作中的 .NET Standard 部分无关紧要...您确定与生成的内容相比,您没有在
Startup.cs中进行任何更改吗?同时将using放在文件顶部...如果它不起作用 - 将项目发布到 GitHub -
ApiController 在 System.Web 命名空间中 (stackoverflow.com/questions/40912473/…)
-
@AndrewE - Microsoft 从
ControllerBase生成继承。你为什么建议改变它?!
标签: c# .net-core asp.net-web-api2 asp.net-core-webapi .net-standard