2012-06-22 130 views
0

在asp.net天之前很長一段時間,當我有一個很長的任務時,我只需要在頁面上運行任務,並使用某種類型的刷新將輸出發送給用戶。沒有單獨的線程或任何東西從asp.net開始,我一直以相同的方式執行長時間的任務。我有一個用response.flush刷新輸出的aspx頁面。這似乎對我來說工作正常(我有一些任務運行幾個小時或更長),但我一直在閱讀,這是不好的,但我想知道爲什麼?發生在你身上的一些問題是你不會這樣做的?沒有單獨線程的ASP.NET長時間任務

回答

1

假設用戶意外或不知情地導航離開正在執行漫長過程的頁面。這可能會導致中斷,導致用戶恐慌,然後可能通過重新提交來啓動另一個長時間進程。

假設您必須在線訪問您的銀行帳戶,並且想要生成一些可能需要很長時間的財務報告。然後,您將不得不離開您的頁面,並可能會離開您的桌面(例如)。有人可能會走進你的辦公桌,跳進舒適的椅子,在流程運行時點擊後退按鈕 - 他們剛剛發現你的賬戶裏有一百萬美元。 「約翰尼,看起來像今天爲我們所有人買午餐!」

處理這種情況的標準方法,特別是在你的情況下,是讓一個windows服務負責處理,並且頁面可以通過數據庫,事件日誌或者定期詢問當前進程的狀態一些其他手段。這通常是我採取的方法,例如,我的用戶啓動了可能需要5分鐘才能運行的開票流程。用戶可以重新訪問該頁面以檢查其是否準備好,或者服務可以選擇啓動電子郵件,發送文本等以通知用戶操作的狀態。

+0

有道理,但這些都是從調度程序運行的所有管理任務 – user204588

+0

這是自動的嗎?如果是這樣,那麼網頁沒有額外的好處,但如果它爲你完成了工作,那麼很簡單 - 只要確保會話超時配置正確。如果將所有的邏輯編碼到頁面中而不是通用的庫中,並且您有理由保留網頁,那麼只要您的組織能夠正確控制網頁,就保留網頁。 – Jeremy

相關問題