我試圖在ASP.NET中首次實現重定向後。假設我的業務對象可能需要幾秒鐘到幾分鐘才能完成,按什麼順序以及使用什麼語法?如何通過「POST後重定向」模式使用ASP.NET? [編輯]
例如:
網友發帖的
服務器發出的Server.Transfer或Response.Redirect的
- 服務器做一些事情,需要一兩角分鐘的Thread.Sleep
處理這種情況的最佳方法是什麼?
我試圖在ASP.NET中首次實現重定向後。假設我的業務對象可能需要幾秒鐘到幾分鐘才能完成,按什麼順序以及使用什麼語法?如何通過「POST後重定向」模式使用ASP.NET? [編輯]
例如:
網友發帖的
服務器發出的Server.Transfer或Response.Redirect的
處理這種情況的最佳方法是什麼?
在這種情況下,最好是堅持使用Response.Redirect()
,以便用戶的客戶端發出重定向,而不是Server.Transfer()
,它執行純服務器端重定向到不同的上下文。
關於需要用戶等待的過程,您可能希望使用某種異步實現,其中耗時的操作放在後臺線程中;與此同時,用戶不是在空白的加載屏幕上等待,而是將Response.Redirect()
給予「處理」頁面,輪詢服務器以完成當前操作並更新用戶。要增加波蘭語,請考慮實施類似Facebook的圖片上傳工具,在用戶繼續正常使用網站的同時,在屏幕的角落放置進度條。
你有關於如何添加波蘭語的提示嗎? JavaScript只是輪詢一個WCF服務(或等價)? – LamonteCristo 2010-08-24 17:46:01
確切地說,服務器會有某種Web方法,用於檢索當前正在執行的進程的進度並將其返回給JavaScript。從那裏JavaScript會簡單地更新其進度欄。您可以使用JavaScript setInterval()指示客戶端每隔幾秒輪詢一次服務器以獲取當前進度。對另一個問題的這個答案有一個[如何用JavaScript實現輪詢過程]的例子(http://stackoverflow.com/questions/3526955/displaying-post-data-with-jquery/3527018#3527018)。 – 2010-08-24 17:54:10
最後,在重定向之後放置bizlogic以避免雙重提交會有意義嗎?似乎有可能發生...... – LamonteCristo 2010-08-24 20:21:46
從我所看到的,你需要做的:
但是,這裏顯而易見的缺點是用戶在服務器做某些工作時一直在等待(兩分鐘是很長的延遲時間,他們可能會認爲某事出錯了),並且可能你可能會在瀏覽器上發出HTTP請求超時。
在代碼方面,這是非常簡單的:
<FORM METHOD="POST">
碼Response.Redirect("mypage.aspx")
執行GET這是否幫助?
Huggil Thread.Sleep只是模擬後端進程,需要一些時間才能完成.. – LamonteCristo 2010-08-24 17:43:36
是的,謝謝...似乎BizLogic總是在重定向之前運行在任何情況下。 – LamonteCristo 2010-08-24 17:51:10
您是否希望用戶知道他提交的結果,以防失敗? – Holystream 2010-08-24 16:42:05
可能的重複[Server.Transfer Vs. Response.Redirect](http://stackoverflow.com/questions/224569/server-transfer-vs-response-redirect) – 2010-08-24 16:42:28
@Nathan泰勒:不是重複的......雖然這是有幫助的,但似乎我需要響應。重定向在「重定向後」模式,但我不確定步驟?我應該不是將#2與#3顛倒過來?我只是假設這是正確的序列 – LamonteCristo 2010-08-24 17:20:03