如果 Web 服务器、网站或站点的单个目录或文件上启用了客户端证书,则客户端在上载较大的文件时可能会看到 HTTP 413 错误。
如果客户端向运行 IIS 6.0 的 Web 服务器发送一个较长的 HTTP 请求(如 POST 请求),则 IIS 工作进程可能会收到足以解析请求标头的数据,但不会收到整个请求实体正文。当 IIS 工作进程检测到需要客户端证书以向客户端返回数据时,IIS 尝试重新协商客户端连接。不过,客户端无法重新协商连接,因为它正在等待向 IIS 发送请求中的其余数据。
如果请求客户端重新协商,则必须使用 SSL 预加载功能预加载请求实体正文。SSL 预加载功能将使用用于 ISAPI 扩展的 UploadReadAheadSize 配置数据库属性的值。但是,如果 UploadReadAheadSize 小于内容长度,则返回 HTTP 413 错误,并关闭连接以防止出现死锁。(在以下情况下出现“死锁”:客户端正在等待发送请求实体,而服务器等待完成重新协商,重新协商要求客户端能够发送数据,可是这是无法完成的。)
解决方案是确保没有禁止客户端发送整个实体正文。为此,应将 UploadReadAheadSize 的值更改为大于内容长度的值和最大请求实体主体限制更改为大于文件大小。
关于IIS7中发生413错误 未显示页面,因为请求实体过大的解决方法如下:
第一步:
windows服务器,条件允许的话可以进入到服务器界面中进行操作,条件不允许的情况可以使用xshell这类工具进行远程连接
进入 cd C:\Windows\System32\Inetsrv 目录执行命令
成功后再次输入:
appcmd.exe list config -section:system.webServer/serverRuntime // 查看当前设置的 UploadReadAheadSize 大小(byte)
appcmd.exe set config -section:system.webServer/serverruntime /uploadreadaheadsize:20480000 // 这个要设置够大
或者可视化编辑操作
在默认网站下选择网站,选择配置编辑器(或者全局选择配置编辑器)
在Section Dropdown中,选择"system.webServer / serverRuntime"
为"uploadReadAheadSize"输入更高的值,例如1048576字节。默认值为49152字节。
第二步
还需要在web.config文件中更改上传文件的大小
在创建的项目里面是没有 “web.config” 文件的。
上传大文件时需要配置下文件的大小,需要在 “config” 文件里配置。创建一个或复制一个 “web.config”
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.webServer> <security> <requestFiltering> <!--单位:字节。 --> <requestLimits maxAllowedContentLength="1073741824" /> <!-- 1 GB --> </requestFiltering> </security> </system.webServer> </configuration>
注意事项:
大文件的话因为上传时间有可能会增长,可能会报错:“HTTP 错误 500.0 - INTERNAL SERVER ERROR”FASTCGI 进程超过了配置的请求超时时限。所以还需要配置下相应时间
此刻再启动IIS后,发现问题解除,可以正常上传文件了。(我是这样解决的,如果大家有其他的更好的方法欢迎大家一起讨论留言交流。)
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛