[英]413 request entity too large - Web API
我在嘗試將數據從我的 Web 應用程序 (.netfx 4.6.1) 發送到我的 Web api (.net core 3.1) 時遇到了 413 問題。 在下面的代碼中,我發送了一個列表,其中包含圖像的字節數據以及構建文件所需的附加數據。 預期的輸出是返回一個包含新文件的字節數組。 不幸的是,在發送請求時,我收到一個錯誤:響應狀態代碼不表示成功:413(請求實體太大)。
該錯誤似乎僅在文件很大時才會發生,這是有道理的。 我所做的研究似乎指向 IIS 中的設置,主要是 maxAllowedContentLength、maxRequestLength 和 uploadReadAheadSize。 我嘗試將這些值增加到更適合此過程的值,但似乎沒有任何效果。 我已經針對 web 應用程序和 web api 調整了它們,因為我不確定是哪個導致了問題。
問題出在哪里? 在應用程序中,API,還是兩者兼而有之? 我是否缺少允許增加尺寸的其他設置? 我發送請求的方式有問題嗎? 任何幫助表示贊賞。
public static async Task<byte[]> CreatePdfFromImageFilesAsync(List<ImageFile> imageFiles)
{
var list = new List<dynamic>();
foreach (var item in imageFiles)
{
list.Add(new
{
Data = Convert.ToBase64String(item.Bytes),
PageOrder = item.PageOrder,
Rotation = item.Rotation,
Type = "PDF"
});
}
var response = _client.PostAsJsonAsync($"{FileCreatorAPI}/api/files/CreateFileFromMultiple", list).Result;
var result = response.EnsureSuccessStatusCode();
var bytes = await result.Content.ReadAsAsync<byte[]>();
return bytes;
}
您可以檢查該屬性https://github.com/aspnet/Announcements/issues/267嗎? 使用
[RequestSizeLimit(100_000_000)]
在您的控制器入口點上,或更全局地以這種方式設置它:
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
編輯:來自 MS 的文章: https : //dotnet.microsoft.com/download/dotnet-core
我認為問題出在服務器上。 服務器正在終止請求,因為它超過了它配置的最大允許請求大小。
您使用的是哪個服務器? 對於 Nginx 用戶,決定允許的 HTTP 請求大小的指令是client_max_body_size
,默認的最大允許請求大小為 1MB。 Apache 中的限制是通過 LimitRequestBody 指令設置的,默認為 0(表示無限制)到 2147483647 (2GB)。
如果您使用這兩個服務器中的任何一個,請查看這篇文章,了解如何修復它。
以下更改對我有用
// If using Kestrel:
.Configure<KestrelServerOptions>(options =>
{
options.AllowSynchronousIO = true;
//options.Limits.MaxRequestBodySize = null; --did not worked
options.Limits.MaxRequestBodySize = int.MaxValue;
})
// If using IIS:
.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
//options.MaxRequestBodySize = null;
options.MaxRequestBodySize = int.MaxValue;
});
創建 web.config 文件並添加以下配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.