如果 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 大?。╞yte)
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后,發現問題解除,可以正常上傳文件了。(我是這樣解決的,如果大家有其他的更好的方法歡迎大家一起討論留言交流。)
如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇