我一直在爲此奮戰一週。有關其他背景信息,請參閱my previous question。爲什麼我不能防止從我的HttpRequest從WPF客戶端分塊到Web API控制器?
我的WPF
客戶端使GET
,POST
和PUT
調用我的Web API控制器。一切都好幾個星期。然後突然,所有我的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.
}
}
「用戶」對象是實體框架對象,並且不顯着。簡單的字符串,DateTime和數字屬性。
類似的,同樣的真氣,我可以設置request.Headers.AcceptEncoding到空,它在我的控制器到達作爲接受編碼:gzip,緊縮。
描述了同樣的問題和症狀有些鏈接:
- Issue with .NET Web API and Chunked Transfers
- Web api 2.1 does not work with a chunked request
- How to disable Chunked Transfer Encoding in ASP.Net C# using HttpClient?