2011年4月7日 星期四

ASPNET 修改預設上傳檔案的大小

根據MSDN記載,ASP.NET為防止駭客利用大檔案進行DOS(Denial Of Service)攻擊,所以把上傳檔案大小限制在4096KB(4MB),因此當上傳檔案超過4MB時,就會收到System.Web.HttpException 超出最大的要求長度的錯誤訊息,要解決這個問題有下列做法:



  • 修改web網站或專案的web.config中httpRuntime區段的maxRequestLength屬性。
  • 修改C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config(以.NET Framework 4.0為例)讓所有網站都繼承相同的設定。
  • 以程式方式修改HttpRuntimeSection.MaxRequestLength屬性。


<httpRuntime maxRequestLength="10240" executionTimeout="300"/>


// Get the MaxRequestLength property value.
Response.Write("MaxRequestLength: " + configSection.MaxRequestLength + "<br>");
// Set the MaxRequestLength property value to 2048 kilobytes.
configSection.MaxRequestLength = 2048;



上述方式都可以順利調整檔案上傳時地限制大小,但萬一使用者上傳的檔案還是超過限制,在做完上述調整後可能收到下列錯誤訊息:

  • 無法顯示網頁
  • 伺服器應用程式無法使用
  • 已傳回類型 System.OutOfMemoryException 的例外狀況

因此最好的做法就是在Global.asax實作錯誤控制機制,當檔案上傳超過限制時,出現友善的錯誤訊息(雖然有一派說法指出,錯誤訊息應避免太詳細,以免讓駭客有機可趁,在此僅提供可能的解決方案,麻煩各位依照自己的狀況自行斟酌使用)。



原文可以參考此篇文章

沒有留言:

張貼留言