2010-03-09 183 views
0

我們的asp.net 2.0應用程序在將響應發送回客戶端之前有很長的過程(同步)。我觀察到,第二個請求,與第一個請求完全相同,在客戶端IE8長時間等待響應之後發送,而我們的應用程序仍在處理第一個請求。丟失會話中更改的數據

我使用網頁會話使用預定義項來存儲一個標誌,當初始請求到達,然後開始漫長的過程,而客戶端IE瀏覽器等待響應,因此,如果第二個請求到來時,我們的應用程序檢查會話值。在我們的應用程序設置會話標誌並開始處理之後,我使用Fiddler「Abort Session」中止初始請求,立即自動發送第二個請求(與第一個請求相同),但之前設置的會話值似乎不再存在。

有什麼想法?

回答

0

當在你持續不斷的過程,第二請求進來是不是overwritting您的當前請求的值,因爲它僅存儲一個項目?假設兩個請求都在同一個會話中進入。

也許考慮存儲物品的清單,這樣你可以在第二個項目添加到您的標記的列表,然後找到任何前述項目並將其刪除。

可能啓動第二請求會話之前殺害的請求會話?

我真的不明白你的問題/解決方案所有的好,但希望這有助於。

編輯根據您的評論:

如果不再存在,它可能是由於你的會話超時和擦拭的值,所以第二個將不能夠訪問它。第二次連接是否在同一會話中進入?在兩種情況下比較會話ID。同時檢查你的超時。

您也可以存儲在您的應用程序緩存此信息,有一個真正的長期到期。如果您只想爲每個用戶創建一個進程,然後存儲您的值,請使用會話ID甚至用戶的密鑰字典。當同一用戶發出第二個請求時,無論會話ID如何,您都可以找到它。只要確保您的流程完成後即可清除。

+0

是的,它是一個項目,但它在設置值之前檢查標誌是否已存儲在會話中。問題是第二個請求進入,由第一個請求設置的標誌不再存在。 – user150528 2010-03-09 19:52:18