0

シンプルな WebAPI アプリがあります。私のコントローラーには次のものがあります:

[HttpPost]
public ActionResult DoSomeWork(string stringParam, DTOObject dto)
{
    // Some work gets done in here
}

これを行うコンソールアプリがあります:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(_context);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var response = client.PostAsJsonAsync("ControllerPath/DoSomeWork", new object[]{someString, dtoObject}).Result;

エラーは表示されません。私のブレークポイントがコントローラー内でヒットすると、入ってくる文字列が NULL として表示され、入ってくる DTO は完全に入力されていますが、デフォルト値 (1/1/1900s、null など) です。コントローラーがオブジェクトを適切に逆シリアル化していないように感じますが、これを修正する方法がわかりません。何かご意見は?

4

1 に答える 1

1

解決策は、コントローラーが ApiController ではなかったためです。Controller ではなく ApiController から継承するように Controller を変更すると、すべて問題なく動作しました。

于 2013-02-18T22:42:42.530 に答える