Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 543
Jurjen Avatar asked Nov 22 '18 10:11

Jurjen


People also ask

What does it mean 413 Request Entity Too Large?

The HTTP 413 Payload Too Large response status code indicates that the request entity is larger than limits defined by server; the server might close the connection or return a Retry-After header field.

How do I fix Nginx 413 Request Entity Too Large?

Error: 413 “Request Entity Too Large” in Nginx with “client_max_body_size” / Changes in Nginx config file. This is happening because of your nginx server not allow to upload file which is larger than defined size in nginx config file.To solve it , you have to modify your nginx configuration.


3 Answers

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>
like image 62
M. Mennan Kara Avatar answered Oct 04 '22 05:10

M. Mennan Kara


For me I had to do in the web.config setting using maxAllowedContentLength and also an attribute on the action that was reading the file. I'm working on a .NET Core 3 application hosted on IIS.

Web.config or applicationHost.config on ASP .Net Core:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="2147483648" />
        </requestFiltering>
    </security>
    ...
</system.webServer>

Locate applicationHost.config under

<YourProjectFolder>/.vs/<YourProjectName>/config/applicationhost.config

If it still does not work, add attribute on the Action of the Controller:

[DisableRequestSizeLimit]
[HttpPost]
public async Task<IActionResult> PostMyFile()
{
   ...
}
like image 22
Tiago Ávila Avatar answered Oct 04 '22 03:10

Tiago Ávila


I think, you may need to modify your web.config then add "maxRequestLength" and "maxAllowedContentLength"

<system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2" maxRequestLength="50240" executionTimeout="600"/> <!-- in Kb  -->
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="52428800" /> <!-- in byte (50 Mb) -->                                               
      </requestFiltering>
   </security>
like image 1
Lemons Avatar answered Oct 04 '22 04:10

Lemons