作为.NET程序员我们都清楚如何修改.NET Web程序上传文件的大小,但是我最近在做.NET Core 项目的时候发现我不清楚如何修改Kestrel上传文件的大小,经过翻阅微软官方文档我成功实现了修改Kestrel上传文件大小的。现特分享出来给大伙儿。
在 Net Core 中默认 body 最大是28.6M,如果要修改这个大小,有两种方法,一种是局部修改,另一种是全局修改,下面我分别来说一下。
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
});
}
上面的代码中 options.Limits.MaxRequestBodySize 就是用来全局设置 Kestrel body 大小的,单位是字节,当赋值为 null 时表示不限制大小。
另一种是在 appsettings.json 文件中配置,并在 Startup 类的 ConfigureServices 方法中加载设置,案例代码如下:
{
"Kestrel": {
"Limits": {
"MaxRequestBodySize": 1024000
}
}
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure<KestrelServerOptions>(
Configuration.GetSection("Kestrel"));
}
如果你想在生成主机时就配置 Kestrel 的话,我们可以在 Program 类的 CreateWebHostBuilder 方中读取配置,案例代码如下:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.Configure<KestrelServerOptions>(
context.Configuration.GetSection("Kestrel"));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
TIP:以上代码源自官方示例,更多 Kestrel 的配置请访问微软官方文档。