HttpClient发送MultipartFormDataContent遇500错误,预加载可解决
HttpClient发送Multipart Form Data请求时的500错误问题
我调用一个接收Multipart Form Data请求的REST接口,接口包含一个文件字段,测试使用的是42k的PNG图片。发送请求的代码如下:
using var content = new MultipartFormDataContent() { { new StringContent(message.SubscriberId.ToString()), "subscriberId" }, { new StringContent(message.TemplateName), "templateName" }, }; if (message.Attachment != null) { var c = new ByteArrayContent(message.Attachment.Data); content.Add(c, "file", message.Attachment.Filename); } using var request = new HttpRequestMessage(HttpMethod.Post, "transactions") { Content = content }; //await request.Content.LoadIntoBufferAsync(); using var msg = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken);
遇到的现象:
- 注释掉
await request.Content.LoadIntoBufferAsync();时,接口返回500内部服务器错误 - 取消注释该行,或者调用
ReadAsStringAsync()查看请求内容后,请求能正常执行 - 仅发送文件的前12200字节时请求也能成功,但这个限制并非固定:部分小于该大小的图片仍会失败,而一张14k的图片无需预加载即可成功
情况分析:
部分图片能正常工作的现象表明REST接口可能存在问题,但预加载请求就能解决问题的情况,说明问题不完全出在接口端。
内容的提问来源于stack exchange,提问作者Simon Halsey
相关产品推荐
相关产品推荐

