2011-05-13 36 views
0

當連續進行大量調用時,是否使用asmx服務通過ajax更新會話變量調用問題?通過Ajax的ASMX服務調用掛起(從未完成)

我有一個asmx(項目是傳統的ASP.NET,在Web應用程序層沒有WCF)更新會話變量的webservice。有一個ajax調用,當點擊一個複選框時使用這個方法。它可以工作,除非您一個接一個地點擊複選框(可以完成)。 ajax調用掛起(永遠不會結束)。

我在想這與嘗試更新會話變量的多個請求有關,但我不確定。任何人都會遇到這個問題,並可以提供一些建議?注意:我知道WCF將是一個可能的答案,但我想知道是否有一個解決方案不需要將asmx服務更改爲WCF。

+0

如果你在asmx文件中設置斷點,當你點擊多個複選框時,你可以點擊它們嗎? – 2011-05-13 14:07:23

回答

0

正在使用asmx服務通過ajax更新會話變量在大量調用連續進行時調用一個問題?

是的,因爲ASP.NET會按順序排隊和執行這些請求,而不是並行執行,因爲會話對象不是線程安全的。如果來自同一個會話的多個請求被髮送到某個ASP.NET處理程序,並且該處理程序寫入會話,它將簡單地排隊這些請求。

+0

如果是這樣的話,它的服務調用可能需要更多時間才能完成請求隊列... – 2011-05-13 14:13:09

+0

這也回答了我的問題。謝謝。 – 2011-05-13 14:47:11

0

如果您的服務只更新會話變量中的同一個鍵,您可以嘗試將該值本地存儲在cookie中,直到該值發生更改。然後,當值改變時,您可以調用ASMX服務將新值存儲在會話變量中。

0

根據您使用的AJAX庫,您始終可以選擇在下次調用之前放棄上一次運行的調用。如果您可以詳細闡述如何調用Web服務,我可能會幫助您放棄以前的調用,然後再開始新的調用。

+0

好的建議。我知道我可以調用abort來終止AJAX調用請求(我正在使用jQuery)。我更感興趣的是asmx服務這麼久。 – 2011-05-13 14:46:05