我正在运行ASP.NET Core Web应用程序并希望上传大文件。
我知道在运行IIS时,可以通过web.config
更改限制:
<httpRuntime maxRequestLength="1048576" />
...
<requestLimits maxAllowedContentLength="1073741824" />
如何在运行新的ASP.NET Core Kestrel Web服务器时执行等效操作?
我收到异常“请求正文太大了。”
答案 0 :(得分:39)
我发现this helpful announcement确认从ASP.NET Core 2.0开始有28.6 MB的主体大小限制,但更重要的是显示如何绕过它!
总结:
对于单个控制器或操作,请使用[DisableRequestSizeLimit]
属性进行限制,或使用[RequestSizeLimit(100_000_000)]
指定自定义限制。
要在BuildWebHost()
方法内部全局更改Program.cs
文件,请在下面添加.UseKestrel
选项:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
}
为了更加清晰,您还可以参考Kestrel options documentation。
答案 1 :(得分:2)
other answer用于ASP.NET Core 2.0,但我想提供.NET Core 3.x Web API的解决方案。
您在program.cs
中的代码必须像这样工作:
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;
});
});
}