增加Kestrel的上传请求长度限制

Tod*_*her 23 file-upload kestrel-http-server asp.net-core asp.net-core-2.0

我正在运行ASP.NET Core Web应用程序,并希望上传大文件.

我知道在运行IIS时,可以通过web.config以下方式更改限制:

<httpRuntime maxRequestLength="1048576" /> 
...
<requestLimits maxAllowedContentLength="1073741824" /> 
Run Code Online (Sandbox Code Playgroud)

如何在运行新的ASP.NET Core Kestrel Web服务器时执行等效操作?

我得到了例外情况"申请机构太大了".

Tod*_*her 53

我发现这个有用的声明确认从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;
  }
Run Code Online (Sandbox Code Playgroud)

为了更加清晰,您还可以参考Kestrel选项文档.

  • 回答你自己的问题是[完全正常](https://stackoverflow.com/help/self-answer),如果你有一个你认为有用的问题,我们鼓励你这么做!所以感谢您的研究!:) (7认同)
  • 对不起,回答我自己的问题感觉很奇怪,但我希望其他人也能从中受益. (2认同)

Akb*_*ari 5

对方的回答是ASP.NET 2.0的核心,但我想为.NET核心3.x的网络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;
                });
            });
}
Run Code Online (Sandbox Code Playgroud)