我已经为此奋斗了一个星期。有关其他背景信息,请参阅我之前的问题。
我的WPF
客户对我的 Web API 控制器进行GET
和POST
调用PUT
。几周来一切都很好。然后突然之间,我所有的 PUT 和 POST 调用都分块进入。我找不到任何阻止它的方法。我强烈怀疑我做了一个影响一切的核心更改,但我已经筋疲力尽地试图找到它。我回顾了源代码控制并恢复了旧代码,但它只是拒绝工作。
我知道“request.Headers.TransferEncodingChunked”,它没有效果。我可以在我的客户端中明确地将其设置为null或false,并且它总是以true的形式出现在我的下面的例程中。
我的 PUT/POST 控制器方法遵循此模型。对我来说,结果是我的传入对象(此处为“用户”)作为空值到达。但是,如果我.ReadAsStringAsync()
对请求执行操作,我会得到完全预期的 JSON。但我不想围绕这种不直观的模式重新设计这个应用程序。爆破的物体应该未分块到达并准备好工作!
[HttpPut]
[ResponseType(typeof(User))]
public IHttpActionResult Put([FromBody] User user)
{
if (user == null)
return Content(HttpStatusCode.BadRequest, "User data is null");
try
{
....etc.
}
}
“用户”对象是一个实体框架对象,并且不起眼。简单的字符串、日期时间和数字属性。
同样,同样令人愤怒的是,我可以将 request.Headers.AcceptEncoding 设置为null并且它以Accept-Encoding: gzip, deflate 的形式到达我的控制器。
一些描述相同问题和症状的链接: