HttpClient.GetAsync 抛出 413 请求实体太大

问题描述 投票:0回答:1

我有一个 .NET 8 C# Azure Functions 应用程序。它调用第三方供应商 API,该 API 返回非常大的 JSON。大多数情况下,以下代码可以工作,但仅有时会抛出 413 Request Entity Too Large 错误。当它在我的代码中抛出错误时,相同的请求在 Postman 中工作得很好。

public async Task<MyLargeObject> GetMyLargeObjectAsync(string unique_id)
{
    MyLargeObject myLargeObject = new MyLargeObject();

    try
    {
        HttpClient client = new HttpClient()
        client.DefaultRequestHeaders.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
        client.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0.0");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _token);

        var response = await client.GetAsync(_vendorEndPointURL + unique_id);

        response.EnsureSuccessStatusCode(); // This line throws exception when response JSON is very large
        if (response.Content != null)
        {
            HttpContent content = response.Content;
            string result = content.ReadAsStringAsync().Result;
            myLargeObject = JsonConvert.DeserializeObject<MyLargeObject>(result);

        }
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, $"Error getting MyLargeObject from Vendor API. Unique ID: {unique_id}");
        throw;

    }
    return myLargeObject;
}

我什至在 Program.cs 中添加了以下内容,但仍然不高兴:

services.Configure<KestrelServerOptions>(options =>
{
    options.Limits.MaxRequestBodySize = long.MaxValue;
    options.Limits.MaxResponseBufferSize = long.MaxValue;
}); 
services.Configure<IISServerOptions>(options =>
{
    options.MaxRequestBodySize = long.MaxValue; 
});
azure-functions httpclient .net-8.0 http-status-code-413
1个回答
0
投票

将文件“web.config”添加到您的项目中,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2073741824" />
      </requestFiltering>
    </security>
  </system.webServer>

</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.