所以當你透過 HTTP 上傳過大的檔案時,雖然 ASP.NET 程式有開始執行,但是只要執行到 ASP.NET 設定的 maxRequestLength 上限時,就會將此次的 HTTP 對話直接關閉 ( 斷線 ),導致 Browser 無法完成 HTTP Request 這個動作,所以連 HTTP Request 都沒有完成的情況下,怎麼可能還從 Server 那邊得到 HTTP Response 指令!所以 Browser 根本不知道如何處理接下來的動作,這時如果你是使用Internet Explorer 瀏覽器的話,就會出現 IE 預設的錯誤訊息 ( 請檢查您的網際網路連線。嘗試瀏覽其他網站,確定您已連線至網際網路。 ),使用者會感覺上好像 Server 端的程式出錯了,但是其實是 Browser 無法處理 HTTP 指令才導致這個畫面的出現。
所以你寫的任何要回應給 Browser 的程式都是沒有用的 ( 例如: Response.Redirect("Error.htm"); ),Browser 完全接收不到喔!! 也因此這問題不只在 ASP.NET 會發生,在其他的 Web 應用平台都會有類似的問題,但這說穿了也不應該是個問題,你只要了解 HTTP 的運作機制,就不難了解為什麼會這樣!
預設來說 ASP.NET 的最大的檔案上傳限制為 4096 (4 MB),如果要調大檔案上傳的限制必須要調整 web.config 中在
<configuration>
<system.web>
<httpruntime maxrequestlength="40000" executiontimeout="300">
</SYSTEM.WEB>
</configuration>
沒有留言:
張貼留言