-
请求体大小:
-
请求头中显示
Content-Length: 144052
,即请求体大小约为 144KB。 -
IIS 在处理请求时,尝试读取请求体,但在某个阶段触发了大小限制。
-
-
错误触发模块:
-
错误是在
IIS Web Core
模块中触发的,具体是在BEGIN_REQUEST
阶段。 -
日志中显示:
xml复制
<EventID>0</EventID> <Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode> <Data Name="ModuleName">IIS Web Core</Data> <Data Name="Notification">1</Data> <Data Name="HttpStatus">413</Data> <Data Name="HttpReason">Request Entity Too Large</Data>
-
-
配置限制:
-
你在
web.config
中配置了maxAllowedContentLength="1073741824"
(1GB),这看起来足够大。 -
但日志显示请求体大小(144KB)远低于这个值,说明问题可能出在其他地方。
-
分析与解决建议
-
uploadReadAheadSize
配置问题:-
你提到之前将
uploadReadAheadSize
设置为0
,这可能导致 IIS 无法正确读取请求体。 -
建议 :将
uploadReadAheadSize
设置为一个合理的值,例如10485760
(10MB)。在applicationHost.config
文件中添加或修改:
路径:C:\Windows\System32\inetsrv\config\applicationHost.config
xml复制<serverRuntime uploadReadAheadSize="10485760" />
然后重启 IIS。需要注意增加部署项目名称为自身的项目名称。
*<location path="部署项目名"> <system.webServer> <security> <access sslFlags="Ssl, SslNegotiateCert" /> </security> <serverRuntime uploadReadAheadSize="1073741824" /> </system.webServer> </location>
-
-
IIS 请求过滤模块的限制:
-
IIS 的请求过滤模块可能对请求体大小有限制。
-
建议 :检查 IIS 的请求过滤模块配置,确保没有其他限制。在
applicationHost.config
文件中,找到<requestFiltering>
节点,确保maxAllowedContentLength
设置正确:xml复制
<requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> </requestFiltering>
-
-
ASP.NET Core 的请求体大小限制:
-
如果你的应用是 ASP.NET Core 应用,还需要在代码中配置请求体大小限制。
-
建议 :在
Startup.cs
或Program.cs
中添加:csharp复制
services.Configure<FormOptions>(x => { x.MultipartBodyLengthLimit = 1073741824; // 1GB });
-
-
检查其他限制:
-
确保没有其他地方(如网络设备、代理服务器等)对请求体大小有限制。
-
检查 IIS 的日志文件,确认是否有其他错误信息。
-