我花了 10 个小时试图弄清楚为什么我的 http 请求在执行以下任务时失败
request.Content.ReadAsMultipartAsync().Result.Contents
它一直返回错误:
Unexpected end of MIME multipart stream. MIME multipart message is not complete.
经过几个小时的研究,我终于发现请求没有结尾的 CRLF,而 .Net 显然需要它来确定请求的结尾。当我添加自己的 CRLF 时,一切都很顺利。
在 WireShark 中,我查看了其中一个请求,我发现分块请求确实有一个结尾的 CRLF,但 De-Chunked 请求却没有。
所以我剩下两个问题。
- 为什么我的请求缺少结尾的 CRLF,以及
- 有什么方法可以在它到达 .Net 之前将其添加回来,以便 .Net 能够正确处理它?
答案1
末尾的 '0' CRLF CRLF 是分块编码的一部分,Wireshark 在向您提供分块数据时会正确删除它。在我看来,问题在于 MIME 编码需要自己的 CRLF此外通过分块编码添加的内容。
很难说清楚问题出在哪里,但在我看来,你可能找错了地方。