如何增加上传文件的大小限制?

时间:2018-12-18 09:01:42

标签: c# asp.net-core asp.net-core-mvc aspnetboilerplate

我正在使用ABP Zero Core MVC模板(ASP.Net Core 2.x,MVC,jQuery)版本4.2.0。当我尝试使用AJAX将文件上传到控制器时,出现HTTP 404.13错误,表明超出了最大文件大小。 Herehere我找到了类似问题的解决方案,并尝试如此解决,但是它们要么不适合所使用的模式,要么我做错了。

如何在“零核心”中增加最大上传文件大小?

// *.Web.Host\Startup\Program.cs 
// *.Web.Mvc\Startup\Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
    return WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options => { 
            // no effect...  I can only small files uploaded
            options.Limits.MaxRequestBodySize = 1024 * 1024 * 1024; 
        })
        .UseStartup<Startup>();
}

2 个答案:

答案 0 :(得分:1)

您是否尝试过用action装饰控制器[RequestSizeLimit(YOUR_MAX_TOTAL_UPLOAD_SIZE)]以及Startup.cs中的更改?

services.Configure<FormOptions>(opt =>
{
    opt.MultipartBodyLengthLimit = YOUR_MAX_TOTAL_UPLOAD_SIZE;
});

btw,如果您打算将应用程序托管在IIS上,则可以将web.config文件添加到项目中并在其中配置upload size,而不是在IIS服务器上进行配置。

编辑:作为@XelaNimed的注释,在编辑web.config的同时添加startup.cs文件,使代码正常工作。

<configuration>
  <location path="." inheritInChildApplications="false">
   <system.webServer>
     <handlers>
       <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
     </handlers>
     <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
       <environmentVariables />
     </aspNetCore>
   </system.webServer>
 </location>
 <system.webServer>
   <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="YOUR_BYTES" />
       </requestFiltering>
    </security>
  </system.webServer>
</configuration>

答案 1 :(得分:0)

尝试一下

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
  //add to beginning of the method... 
  services.Configure<FormOptions>(x =>
  {
      x.ValueLengthLimit = int.MaxValue;
      x.MultipartBodyLengthLimit = int.MaxValue;
      x.MultipartHeadersLengthLimit = int.MaxValue;
  });


}