【问题标题】:Request Entity Too Large using http client C#使用http客户端C#请求实体太大
【发布时间】: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 这样的嗅探器你可以找到版本。

标签: c# file request


【解决方案1】:

我有一个类似的问题。我能够使用 Postman 而不是从我的应用程序发送请求。 固定装置是更新服务器端的限制。 当从应用程序发送时请求大小可能更大,或者 nginx 以不同方式处理请求。不幸的是,我没有关于服务器 nginx 的详细信息,因为它由另一家公司提供服务。

【讨论】:

    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 2020-11-08
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多