Web API发布对象为空
本文关键字:对象 API 布对象 Web | 更新日期: 2023-09-27 18:25:18
一个快速更新,所以在我的故障排除过程中,如果我从我的应用程序中发布,这就开始起作用,但如果我获取完全相同的数据并尝试通过fiddler发布,则项目为空。在小提琴更换后,尝试它"更容易"了,所以我坚持了下来,但看起来它烧着了我,浪费了几个小时。我也尝试过通过chromes rest客户端发布这些数据,但它不起作用。我希望我知道为什么,因为如果我不能通过fiddler或chrome来实现这一点,这真的会增加我未来的剧团拍摄时间。
谢谢你的帮助。
我正在尝试将数据从winforms应用程序发布到Web API。我一开始有这个问题,但将内容类型设置为application/json解决了这个问题,但是现在我也有同样的行为。我不记得改变过什么,但我一定改变过。即使我发布fiddler的数据,也会出现这种情况。我从viemodel中删除了除1个字符串键值之外的所有内容,试图消除数据本身的格式问题,但在控制器端,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;
}`
从fiddler发帖时,请确保:
Content-Type
报头被设置为application/json
- 数据不包含转义字符串:
{"AssetName":"testname"}
和NOT{'"AssetName'":'"testname'"}
- 该方法设置为POST