ASP.net下大檔案上傳的幾個問題討論

來源:互聯網
上載者:User
我研究這個問題已經很長時間了,ASPUpload的組件以及其它幾個組件都使用過,多多少少對這些組件的工作原理有些瞭解,對於其它一些問題的討論也都遇到過。前幾個星期開發的WebbUpload2.0經過一段時間的測試後,發現它完全是一個超級大BUG,所以放棄發布它了。(不想害人了。)

先收集一些網路上關於這個問題的一些內容:

http://blog.joycode.com/saucer/archive/2004/03/16/16225.aspx 
http://www.cnblogs.com/bestcomy/archive/2004/06/09/14267.aspx BestCompy的上傳組件
http://www.cnblogs.com/lion.net/archive/2004/07/14/24294.aspx lion 的上傳組件
http://www.voidland.com/blog/article.asp?id=22

一般情況下,用ASP,net上傳大檔案會遇到以下幾個問題:
1、無法Catch的頁面找不到錯誤,一般會是DNS錯誤,這裡有一個小討論。
http://koffer.cnblogs.com/archive/2005/04/21/142799.aspx

2、還會遇到這樣的幾個問題:
Action cancled,我在測試WebbUpload2.0的時候遇到多次,跟蹤的LOG發現是使用者取消了上傳。然而這是不可能的,唯一的可能就是IIS自動取消了使用者上傳。

還有一個錯誤就是:The page cannot be displayed
這個錯誤我也遇到過N次。而且為此鬱悶了好幾天。

總結一下問題:
首先要明確,在網路環境不是很壞的情況下,我們是可以在ASP.net下上傳超級大檔案的。BestCompy的組件就是一個很好的例子,然而對於出現的問題,我們要明確原因,然後再來處理。
1、Action canceled問題,
出現這一問題其實只有一種情況,就是在實現HttpMoudule的時候,出現程式錯誤。這時候IIS直接返回Action canceled,而不再產生邏輯頁面。我在偵錯工具的時候發現,不僅在HttpModule裡出現錯誤時,頁面直接Cancel掉,而且在它的子函數裡出現任何錯誤都一樣!
有一個解決方案可以顯示的讓頁面報誤,就是大塊的Catch,把整個Module Catch住,然後拋出自己的異常,這樣會在進度條顯示頁面上看到這個錯誤。(不知道為什麼會是在進度條頁面上)。而上傳頁面上只有一個action canceled錯誤,但在訪問其它頁面前,它會快速的顯示一下自己定義的錯誤。
因此解決這一問題的唯一方法就是:確保你的上傳模組不能有任何的錯誤,否則IIS就直接Cancel掉了。注意:是在傳超級大檔案時(>100MB)。其它的不與討論。

還有個錯誤就是The page cannot be displayed,報DNS錯誤。這個錯誤我一直不知道為什麼,後來跟蹤IIS記憶體,發現上傳過程中,消耗過大時,IIS的進程會消失一次!不用說,就在這消失的一瞬間,頁面找不到了(很正常不是嗎?)。在MSDN上找到了相關的說明:
http://support.microsoft.com/kb/893227
這給我們的程式設計出了個大難題,我的WebbUpload2.0失敗之處就是記憶體佔用太大了,在上傳1G的檔案時,記憶體直線上升,到300MB的時候,IIS就閃了一次,於是出現頁面找不到。跟蹤發現在演算法只一味的追求速度,而沒有管記憶體。這是一個失敗的做法!也讓自己清醒了一次。知道錯誤以後,就可以自己解決問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.