IIS 上传文件报错:413 Request Entity Too Large
早上同事急冲冲跑过来告诉我,网站上传图片报错了,昨天还是好好的,今天突然不行了。然后讲的我自己都怀疑是自己犯错了,想到早上搞了服务器:IIS 7.5 设置域名 https 跳转和 www 跳转,功能是调好了,难道是因为这边修改导致图片上传报错了?
看了下报错内容:前端显示请求实体过大,response 里写了 413 Request Entity Too Large
,意思是上传的文件过大了。这个报错不陌生,之前遇到过 解决413 Request Entity Too Large。不过那个是修改 Nginx 服务器配置。照理说,这是不应该的,因为服务器运行这么久也没报过这错。秉着“有则改之,无则加勉”的态度,还是去搜索了 IIS 413 Request Entity Too Large
的解决方法。
IIS上传文件报 413 Request Entity Too Large
这边复述一下解决过程。
首先修改 C:\Windows\System32\inetsrv\config
下的 applicationHost.config
文件。这是 IIS 服务器的配置文件,修改后需要重启 IIS 服务器才能生效:iisreset /stop
,iisreset /start
。
<location path="www.xxx.com">
<system.webServer>
<serverRuntime uploadReadAheadSize="10485760" />
</system.webServer>
</location>
主要是在 serverRuntime
上添加了 uploadReadAheadSize="10485760"
属性,10485760 表示 10M。
之后是修改 web.config
文件。这里有两个地方要修改:
第一地方 configuration > system.web > httpRuntime
设置 maxRequestLength
属性:
<configuration>
<system.web>
<httpRuntime targetFramework="4.5" requestValidationMode="2.0" maxRequestLength="10485760" />
</system.web>
</configuration>
第二个地方 configuration > system.webServer
,修改 requestLimits
的 maxAllowedContentLength
属性:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="10485760" />
</requestFiltering>
</security>
过程并不复杂,但还没等我测试呢,同事跟我讲已经好了。这不是我解决的,那么就是其他的原因了,后面查看上传后的图片地址发现,本地上传的路径是服务器,而线上上传到的阿里云的 OSS。猜测是上传到阿里云的通道阻塞了,之后又自己恢复了。