我有一个 .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;
});
将文件“web.config”添加到您的项目中,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2073741824" />
</requestFiltering>
</security>
</system.webServer>
</configuration>