问题
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?
回答1:
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>
回答2:
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>
回答3:
Default limit size 65 KB in WCF. Could you try to add below field inside of your binding configuration.
<binding maxReceivedMessageSize="10485760">
回答4:
For me I had to do 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:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
...
</system.webServer>
Attribute on the Action of the Controller:
[DisableRequestSizeLimit]
[HttpPost]
public async Task<IActionResult> PostMyFile(){
...
}
来源:https://stackoverflow.com/questions/53428474/response-413-request-entity-too-large