0
我有一個簡單的WebAPI應用程序。在我的控制,我有:爲什麼我沒有收到我的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,空值等)。我覺得控制器沒有正確地反序列化這個對象,但我對如何解決這個問題感到不知所措。有什麼想法嗎?
在這種情況下使用的好工具是提琴手(免費下載)。它將自己設置爲網絡代理,您可以看到每個請求和服務器響應。在這種情況下,您可以更輕鬆地查看客戶端應用程序傳輸的確切數據。 – DiskJunky 2013-02-18 21:25:16
這可能不是您要查找的方法,但我通常堅持使用'string'參數和'Json.Decode()'和'Json.Encode()'來進行反序列化。我只是覺得它更乾淨。 此外,我建議從WebApi控制器返回一個HttpResonseMessage,以便您可以控制標題(正確的響應代碼等)。 – 2013-02-18 21:28:38
@DiskJunky - 在這種情況下,我無法使用Fiddler,因爲它現在位於同一個框中。 – jermny 2013-02-18 21:32:38