Web API post对象为null

时间:2014-10-01 16:42:46

标签: c# asp.net-web-api


快速更新,所以在我的故障排除过程中,如果我从我的应用程序执行帖子,它开始工作,但是如果我采用完全相同的数据并尝试通过fiddler发布它,则oject为null。尝试改变小提琴手后,我更加“容易”,但是看起来它烧毁了我,浪费了几个小时。我也尝试通过chromes rest客户端发布这些数据,但它不起作用。我希望我知道为什么,因为如果我不能通过提琴手或镀铬工作,那么将来会增加我的麻烦时间。

感谢您尝试提供帮助。


我正在尝试将数据从winforms应用程序发布到Web API。我最初遇到这个问题,但设置内容类型到application / json修复它但现在我有相同的行为。我不记得改变什么,但我必须。即使我从提琴手发布数据,也会发生这种情况。我从我的viemodel中删除了所有内容但只有1个字符串键值以尝试消除数据本身的格式问题,但在控制器端,viewmodel仍为null。不是值,而是viewmodel本身。正在到达控制器,但就像我说对象是空的

控制器看起来像这样

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

模特

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

发布的数据

{ \"AssetName\":\"testname\" }

为了在我从客户端发帖时提供尽可能多的信息,我正在做以下事情。这也是我在fiddler

中生成测试数据的方法
`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;

}`

1 个答案:

答案 0 :(得分:3)

从提琴手发帖时,请确保:

  • Content-Type标头设置为application/json
  • 数据不包含转义字符串:{"AssetName":"testname"}和非{\"AssetName\":\"testname\"}
  • 该方法设置为POST
相关问题