2014-10-01 67 views
0

快速更新,因此,它在我的故障排除過程中原來的地方這個開始,如果我這樣做,從我的應用程序後的工作,但如果我採取完全相同的數據,並嘗試通過將它張貼提琴手該項目爲空。嘗試更換小提琴後,我堅持了很多「更容易」,但它看起來像燒燬了我,浪費了數小時。我也嘗試通過chromes rest客戶端發佈這些數據,但它不起作用。我希望我知道爲什麼,因爲如果我不能通過提琴手或鍍鉻物來工作,它真的會增加我未來的麻煩時間。的Web API後對象空

謝謝你試圖幫助。


我想將數據從一個winforms應用程序發佈到Web API。我最初有這個問題,但設置內容類型爲應用程序/ JSON修復它,但現在我有相同的行爲。我不記得改變什麼,但我必須有。即使我從提琴手發佈數據,也會發生這種情況。我從viemodel中刪除了一切,但刪除了1個字符串鍵值,以嘗試消除數據本身中的格式問題,但在控制器端viewmodel仍然爲空。不是價值觀,而是視角模型本身。正在達成的控制器,但就像我說的對象爲null

控制器看起來像這樣

[HttpPost] public HttpResponseMessage LogValidation([FromBody]ValidationViewModel validationviewmodel) { //Do something }

示範

public class ValidationViewModel { public string AssetName { get; set; } }

被張貼

數據{ \"AssetName\":\"testname\" }

爲了提供儘可能多的信息,當我從客戶那裏發佈信息時,我正在做以下工作。這也是我如何生成的測試數據小提琴手使用

`public Task SubmitValidation() 
{ 
ReportValidaton reportvalidation = new ReportValidaton(); 
var serializedReportValidation = JsonConvert.SerializeObject(reportvalidation);   
var client = new HttpClient(); 
client.BaseAddress = new Uri("MyURI"); 
client.DefaultRequestHeaders.Accept.Clear(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeader("application/json")); 
MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); 
HttpContent content = new ObjectContent<ReportValidaton>(reportvalidation, jsonFormatter); 
HttpResponseMessage response = client.PostAsync("api/LogValidation/", content).Result; 

}` 
+0

您是否嘗試POST {'AssetName:\「testname \」'},您能否看到GET請求是否有效? – Ofiris 2014-10-01 16:49:06

+0

我以前沒有,但在你的評論後,我做了同樣的結果。謝謝。我不確定發生了什麼事。這在星期四工作。甚至嘗試過我上個星期四生成的一些測試數據,以確保我使用的是相同的格式,但仍然沒有去。我還有其他一些數據類型,但爲了確保它不是數據或格式問題,而將它們全部刪除。雖然我懷疑這是正確的軌道,但有一些格式問題,我只是沒有看到它。 – Grayson 2014-10-01 16:53:34

+0

你最近重新命名了你的參數嗎?通常當這發生在我身上時,這意味着我忘記了在重構後更新我的路由映射。 – Adam47 2014-10-01 17:46:06

回答

3

當從小提琴手發佈,確保:

  • 認爲該數據是不是就Content-Type頭被設置爲application/json
  • 包含轉義字符串:{"AssetName":"testname"}和NOT {\"AssetName\":\"testname\"}
  • 該方法設置爲POST
+0

這解決了小提琴手的問題。謝謝。我從serializedReportValidation中提取數據,應該從content.ReadAsStringAsync()中提取數據。仍然不確定爲什麼發佈從客戶端不工作,但現在它的工作,所以我都很好。 – Grayson 2014-10-01 18:07:01

+0

您的意思是發佈客戶_was_ working或_not_?你的問題說客戶端工作,小提琴手din't。 – Mrchief 2014-10-01 18:08:55

+0

如果您的意思是Chrome客戶端(POSTMan或高級REST客戶端或類似的),那麼上述步驟也應該修復它們。 – Mrchief 2014-10-01 18:10:24