簡單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