Những câu trả lời khác giải quyết IIS hạn chế. Tuy nhiên, kể từ ASP.NET Core 2.0, máy chủ Kestrel cũng áp đặt các giới hạn mặc định của riêng nó.
Github of KestrelServerLimits.cs
Announcement of request body size limit and solution (quoted below)
MVC Hướng dẫn
Nếu bạn muốn thay đổi giới hạn kích thước theo yêu cầu cơ thể tối đa cho một hành động cụ thể MVC hoặc bộ điều khiển, bạn có thể sử dụng thuộc tính RequestSizeLimit
. Sau đây sẽ cho phép MyAction
chấp nhận các cơ quan yêu cầu lên tới 100.000.000 byte.
[HttpPost]
[RequestSizeLimit(100_000_000)]
public IActionResult MyAction([FromBody] MyViewModel data)
{
[DisableRequestSizeLimit]
có thể được sử dụng để yêu cầu kích thước không giới hạn. Điều này có hiệu quả khôi phục lại hành vi trước 2.0.0 chỉ cho hành động hoặc bộ điều khiển được phân bổ.
Generic Middleware Hướng dẫn
Nếu yêu cầu không được xử lý bởi một hành động MVC, giới hạn vẫn có thể được sửa đổi trên cơ sở theo yêu cầu sử dụng IHttpMaxRequestBodySizeFeature
. Ví dụ:
app.Run(async context =>
{
context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 100_000_000;
MaxRequestBodySize
là giá trị vô hiệu. Đặt nó thành null sẽ vô hiệu hóa giới hạn như [DisableRequestSizeLimit]
của MVC.
Bạn chỉ có thể định cấu hình giới hạn cho yêu cầu nếu ứng dụng chưa bắt đầu đọc; nếu không thì một ngoại lệ sẽ bị ném.Có thuộc tính IsReadOnly
cho bạn biết nếu thuộc tính MaxRequestBodySize
ở trạng thái chỉ đọc, có nghĩa là đã quá muộn để định cấu hình giới hạn.
toàn cầu Config Hướng dẫn
Nếu bạn muốn thay đổi kích thước theo yêu cầu cơ thể tối đa trên toàn cầu, điều này có thể được thực hiện bằng cách thay đổi một tài sản MaxRequestBodySize
trong callback của một trong hai UseKestrel
hoặc UseHttpSys
. MaxRequestBodySize
là một giá trị rỗng trong cả hai trường hợp. Ví dụ:
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
hoặc
.UseHttpSys(options =>
{
options.MaxRequestBodySize = 100_000_000;
Bạn có thể có nghĩa là 30MB, không GB – jao