ASP.NET 當上傳檔案過大時任何回應瀏覽器的動作都無效

基本的 HTTP 通訊協定就是 Browser 對 Server 發出 HTTP Request 指令,Server 收到 HTTP Request 指令後開始進行資料的運算與處理,然後從 Server 回應 HTTP Response 給 Browser,Browser 收到 HTTP Response 指令後負責處理網頁的顯示或網頁轉向等動作。

所以當你透過 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 中在 <system.web> 區段下新增一個 <httpRuntime> 的設定,如下:

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="40000" executionTimeout="300"/>
  </system.web>
</configuration>

相關網址

  

此文章由 will 發表於 2008/1/27 上午 01:22:00

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: ASP.NET | Web

標籤: , , , ,

收藏:

相關文章

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

八月 29. 2008 11:12