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;
}`

Web API发布对象为空

从fiddler发帖时,请确保:

  • Content-Type报头被设置为application/json
  • 数据不包含转义字符串:{"AssetName":"testname"}和NOT {'"AssetName'":'"testname'"}
  • 该方法设置为POST