如何在Asp.Net.Core 1.0的Kestrel服务器中增大POST请求大小?
解决ASP.NET Core 1.0 + Kestrel 增大POST请求大小的方案
哥们,我太懂你这种早期版本踩坑的痛苦了——ASP.NET Core 1.0的配置逻辑和后来的1.1+确实差异不小,尤其是Kestrel的请求限制配置,根本不是那些针对IIS或高版本的方案能解决的。给你整理了一套专门适配Core 1.0的步骤:
1. 调整Kestrel服务器的底层请求限制
Core 1.0中,Kestrel的请求大小限制是直接在WebHost构建时配置的,不是后来版本里的ConfigureServices。你需要修改Program.cs里的代码:
public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel(options => { // 设置最大请求内容长度,这里以100MB为例(单位:字节) options.MaxRequestContentLength = 100 * 1024 * 1024; // 如果你的请求行(URL+请求方法等)过长,可按需调整这个值(默认8192字节) options.MaxRequestLineSize = 8192; }) .UseStartup<Startup>() .Build(); host.Run(); }
2. 配置MVC框架的请求体限制
光改Kestrel还不够,MVC上层框架也有自己的请求体大小限制,必须同步调整。打开Startup.cs的ConfigureServices方法:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { // 这里设置的值建议和Kestrel的保持一致或更大,避免上层拦截 options.MaxRequestBodySize = 100 * 1024 * 1024; }); }
关键注意事项
- 两个配置缺一不可:Kestrel是底层服务器,会先拦截超出大小的请求;MVC作为上层框架,也会对请求体做二次校验,少了哪一个都会导致请求被拒绝。
- 单位是字节:计算的时候别搞错,比如1GB就是
1024 * 1024 * 1024字节。 - 针对文件上传的额外提醒:如果你的POST请求是上传文件(multipart/form-data格式),这两个配置同样生效,不需要额外的特殊设置(Core 1.0里没有后来版本的
IFormFile单独限制)。
内容的提问来源于stack exchange,提问作者Alex Olshansky
相关产品推荐
相关产品推荐

