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?
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.
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.
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>
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()
{
...
}
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With