我確定我在踩許多步驟之前,但似乎無法解決這個問題。目標是爲具有實時進度欄(適用於多個文件)的ASP.NET 2.0網站創建文件上載頁面。爲什麼我無法從我的文件上傳進度欄獲取異步行爲?
我已經實施並測試瞭解決方案的大部分部分。但愚蠢的是,我似乎無法完成所有工作。
建立了處理的PreRequestHandlerExecute事件自定義HTTP模塊(最初使用的BeginRequest - 但我想訪問會話)的有關要求和使用的HttpWorkerRequest對象分析以塊的形式傳入後的數據。實時進度保存到會話。
在同一個應用程序中構建Web服務,該應用程序提供ScriptMethod將JSON返回給jQuery請求,並從Session中提取進度信息。測試了這一點,它的工作原理。
我的問題我一直沒能有ScriptMethod的(2),而(1)在過程中出現jQuery的投票。 jQuery調用似乎在某個地方排隊,只要上傳完全發佈,它們都會以「100%」突然返回。所以異步部分不起作用。
事情我已經嘗試:
- 提交的文件上傳後與.ajaxForm()(jQuery的形式插件)。
- 使用IFRAMEs嵌套的各種場景。
- 有一個單獨的頁面(在單獨的瀏覽器選項卡中)運行輪詢jQuery,同時我從第一頁提交我的上傳。民意調查仍然停止並排隊,直到第一頁完成。
我已經在網上看到其他非常類似的解決方案,一些人聲稱爲他們工作,所以它必須是可能的,我只是缺少一些基本的東西。
UPDATE:
問題已經解決,所有正在工作。有關SessionState鎖定,請參閱我自己的回答。
是您的網絡頁面基於HTML5?沒有它,實時進度是不可能的。 (以前的網頁使用Flash這樣的東西) –
網頁不是基於HTML5的。沒有HTML5或Flash,你確定實時進度是不可能的嗎?這裏有兩個解決方案,據稱工作,並有非常高的評價:http://www.codeproject.com/Articles/113418/ASP-NET-File-Upload-with-Progress-Bar和http://www.codeproject.com /文章/ 14832/ASP-NET-file-post-direct-to-disk-with-upload-file –
有趣。看起來他們使用'iframe'作爲黑客,允許在後臺提交表單。文件本身的格式是在單獨的'iframe'中。 –