Search code examples
c#asp.net-coreasp.net-core-webapiaspnetboilerplate

response: 413 Request Entity Too Large


When POSTing a request which can contain one or more files (as base64 string) I get this error response:

ERROR 2018-11-22 09:54:18,244 [13 ] Mvc.ExceptionHandling.AbpExceptionFilter - The remote server returned an unexpected response: (413) Request Entity Too Large. System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (413) Request Entity Too Large. at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result) at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result) at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass1_0.b__0(IAsyncResult asyncResult) --- End of stack trace from previous location where exception was thrown --- at ...

I have searched on how to resolve this but I get redirected to WCF solutions all the time.

I have added the following to the web.config of my WebApi project but it doesn't seem to make a difference.

<configuration>
  <system.webServer>
    ....
    <asp>
      <limits maxRequestEntityAllowed="2147483648"/>
    </asp>
    <serverRuntime uploadReadAheadSize="2147483647" />
  </system.webServer>
</configuration>

Can anyone help me or point me to the right resource?


Solution

  • There are two limits you need to change. Kestrel and IIS.

    You can change the MaxRequestBodySize limit of Kestrel in Program.cs.

    public static IWebHost BuildWebHost(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Limits.MaxRequestBodySize = long.MaxValue;
            })
            .UseIISIntegration()
            .Build();
    }
    

    And the limit for IIS can be changed in web.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <security>
          <requestFiltering>
            <requestLimits maxAllowedContentLength="2147483648" />
          </requestFiltering>
        </security>
      </system.webServer>
    </configuration>