响应:413请求实体太大

时间:2018-11-22 10:08:17

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

在发布包含一个或多个文件(作为base64字符串)的请求时,我得到以下错误响应:

  

错误2018-11-22 09:54:18,244 [13] Mvc.ExceptionHandling.AbpExceptionFilter-远程服务器返回了意外的响应:(413)请求实体太大。   System.ServiceModel.ProtocolException:远程服务器返回了意外的响应:(413)请求实体太大。      在System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果)处      在System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult结果)      在System.ServiceModel.Channels.ServiceChannel.EndCall处(字符串操作,Object []输出,IAsyncResult结果)      在System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator。<> c__DisplayClass1_0.b__0(IAsyncResult asyncResult)   ---从之前引发异常的位置开始的堆栈结束跟踪---      在...

我已经搜索了解决方法,但是我一直都被重定向到WCF解决方案。

我在WebApi项目的web.config中添加了以下内容,但似乎没有什么不同。

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

任何人都可以帮助我或指向我正确的资源吗?

4 个答案:

答案 0 :(得分:2)

对我来说,我必须使用maxAllowedContentLength在web.config设置中进行操作,并且还要在读取文件的操作上使用属性。我正在研究IIS上托管的.NET Core 3应用程序。

Web.config:

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

关于控制器动作的属性:

[DisableRequestSizeLimit]
[HttpPost]
public async Task<IActionResult> PostMyFile(){
   ...
}

答案 1 :(得分:1)

您需要更改两个限制。红est和IIS。

您可以在Program.cs中更改Kestrel的MaxRequestBodySize限制。

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

IIS的限制可以在web.config中更改:

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

答案 2 :(得分:0)

我认为,您可能需要修改web.config,然后添加“ maxRequestLength”和“ maxAllowedContentLength”

select * from <myTable> where f1 = :val1 and f2 = :val2 and f3 = :val3
select * from <myTable> where f1 = :val4 and f2 = :val5 and f3 = :val6
select * from <myTable> where f1 = :val7 and f2 = :val8 and f3 = :val9

答案 3 :(得分:0)

WCF中的默认限制大小为65 KB。您是否可以尝试在绑定配置内添加以下字段? <binding maxReceivedMessageSize="10485760">