【发布时间】:2023-02-10 17:46:32
【问题描述】:
您好,我在使用 asp.net 时遇到了一些奇怪的事情。该应用程序最多支持接收 51mb,并且在接收文件请求时工作正常,但是我试图通过外部 rest api 发送相同的文件,但我收到错误“请求实体太大”。奇怪的是,当我通过邮递员发送相同的文件时,目标服务器接受文档并响应良好,我只有在将文件从我的应用程序发送到外部 api 时才会遇到问题。
最大请求长度:
<httpRuntime maxRequestLength="51200" targetFramework="4.7.2" enableVersionHeader="false" />
最大允许内容长度:
<security>
<requestFiltering removeServerHeader="true" >
<requestLimits maxAllowedContentLength="51200" />
</requestFiltering>
</security>
C#代码
public async Task Send(ApiRequest request)
{
using (var client = new HttpClient())
{
string url = GetUrl();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var req= new HttpRequestMessage(HttpMethod.Post, url);
var stream =new MemoryStream(Encoding.UTF8.GetBytes(request.base64doc));
request.base64doc = null;
StringContent payloadContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
var content = new MultipartFormDataContent()
{
{ new StreamContent(stream), "documentName", request.filename,
{ payloadContent, "data" }
};
req.Content = content;
using (HttpResponseMessage response = await client.SendAsync(req))
{
//gets "request entity too large"
}
}
}
我怀疑是因为邮递员让我发送文件,而我的申请不允许我
我是否必须查明外部 API 允许的最大值是什么时候?
【问题讨论】:
-
可能是您使用的 http 版本。有1.0、1.1、2.0版本。使用像 wireshark 这样的嗅探器你可以找到版本。