简单ApiController方法:Asp.Net的Web API 2模式不会自动绑定
public class TestController : ApiController
{
public void TakeIt(MyObject o){
Console.Write(o.ToString());
}
}
简单数据类型:
public class MyObject{
public string V1{ get; set; }
public string V2{ get; set; }
}
简单的POST:
POST http://localhost:11026/api/test/takeit HTTP/1.1
Accept: application/json
Content-Type: application/json
Host: localhost:11026
{"V1":"Something","V2": "Something else"}
出于某种原因,为MyObject o不会自动从JSON表单发布主体绑定(即使在参数前插入[FromBody]
在方法上。
我做错了什么?
SOLUTION(DUH!)
调试我传入的请求,我在Global.asax中已经把这个(因为我没能拿到请求通过提琴手流),这样我就可以先检查它们
protected void Application_BeginRequest()
{
using (Stream receiveStream = Request.InputStream)
{
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
var content = readStream.ReadToEnd();
Console.WriteLine(content);
}
}
}
这是从读取数据发布任何停止的路线。不久,我删除了,自动模型绑定工作正常。
我应该明确表示,我改变了API路线映射到“api/{controller}/{action}/{id}”。不幸的是,既不向该方法添加[FromBody],也不向该方法添加[HttpPost],这对我的控制器上的绑定没有任何影响。我有一种感觉,它的配置设置丢失的地方。 – Jimbo
@Jimbo我必须同意。 OP中没有足够的信息用于说明。提供可用于重现问题并帮助找到解决方案的[mcve]。 – Nkosi
该死的,知道这件事很简单......我已经在我的OP中提供了更多的信息,解释了为什么这不起作用。感谢您的努力。 – Jimbo