快速更新,所以在我的故障排除过程中,如果我从我的应用程序执行帖子,它开始工作,但是如果我采用完全相同的数据并尝试通过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;
}`
答案 0 :(得分:3)
从提琴手发帖时,请确保:
Content-Type
标头设置为application/json
{"AssetName":"testname"}
和非{\"AssetName\":\"testname\"}