如何提升 Kestrel 上传文件的大小限制?
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何提升 Kestrel 上传文件的大小限制?相关的知识,希望对你有一定的参考价值。
咨询区
ToddBFisher
我的程序是 ASP.NET Core WebApp
,我希望上传一个大的文件,我知道在 IIS 中可以轻松的在 web.config
中做如下配置即可,参考如下代码:
<system.webServer>
<security>
<requestFiltering>
<!--<requestLimits maxAllowedContentLength="1073741824"/>-->
<requestLimits maxAllowedContentLength="2147483648"/>
</requestFiltering>
</security>
</system.webServer>
请问当用 Kestrel 承载的 ASP.NET Core
时如何处理?我现在得到的错误都是 Request body too large
回答区
ToddBFisher
我在 github 的 issue 上找到了答案 https://github.com/aspnet/Announcements/issues/267 ,在 ASP.NET Core 2.0
中默认 body 的最大尺寸是 28.6MB
,更重要的还说出了如何绕过它,总的来说,在单个 Controller 或者 Action 上标注 [DisableRequestSizeLimit]
特性可以让当前的 body 无限制,或者干脆设一个特别大的值 [RequestSizeLimit(100_000_000)]
。
如果你要设置全局作用域,需要在 BuildWebHost()
方法中动手脚,在 Program.cs 中添加 .UseKestrel
选项,参考如下代码:
public class Program
public static void Main(string[] args)
CreateWebHostBuilder(args).Build().Run();
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
options.Limits.MaxRequestBodySize = null;
);
Akbar Asghari
楼上的回答是 ASP.NET Core 2.0
版本,如果你想用 NET Core 3.x web API
系列的解决方案,代码应该像下面这样。
public class Program
public static void Main(string[] args)
CreateHostBuilder(args).Build().Run();
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(options =>
options.Limits.MaxRequestBodySize = null;
);
);
点评区
其实你会发现在 .NET Core 系列版本中,每个版本之间写法变动还是挺大的,比如说:2.2
和 3.0
不一样,3.0
和 6.0
又不一样了,下面是 6.0
的写法。
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(so =>
so.Limits.MaxRequestBodySize = null;
);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.UseRouting();
app.MapControllerRoute(
name: "default",
pattern: "controller=Home/action=Index/id?");
app.Run();
总的来说,挺纠结,学无止境 😄
以上是关于如何提升 Kestrel 上传文件的大小限制?的主要内容,如果未能解决你的问题,请参考以下文章