簡體   English   中英

ASP.NET:執行(長時間)回發時無法對同一程序執行AJAX調用

[英]ASP.NET: can't execute AJAX call to the same program while doing (a long) postback

我的程序執行了很長的回發,並且在屏幕上顯示了一些“正在運行”的消息。 現在,我想用AJAX並行查詢以更新該狀態(例如“ 20%完成...”)。

但是事實證明,在回發期間,沒有對任何Web方法的並行調用被執行,這些被延遲。 因此,Javascript會進行這些調用(不是那么定期),但是在整個PostBack結束之前它們不會收到答復(這使更新進度狀態的整個嘗試不可用)。

有沒有辦法對IIS / ASP.NET應用程序進行並行查詢?

我將ASP.NET 4.0和Visual Studio 2010與開發服務器組件一起使用

提前致謝!

您可以看看使用SignalR進行這種操作。 請訪問http://www.signalr.net了解更多信息。

這將使您開始一個漫長的過程,然后將該操作的進度發送回客戶端。

斯科特·漢塞爾曼(Scott Hanselman)在他的博客上提供了一個有效的示例,說明了如何進行此類操作。 看到這里http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx

請注意,盡管他的博客文章使用的是SignalR的舊版本,所以該代碼將需要進行一些API更改才能與最新版本一起使用。

我也很感興趣,找到了下一個解釋:

您不能在回發期間進行AJAX調用,這是因為在回發期間,客戶端中的頁面已被破壞(包括AJAX調用的回調函數),控制權將移交給服務器,以獲取客戶端的新內容。返回到客戶端的一切都在那里重建,而我假設這是在進行AJAX調用時。

另一種選擇是使用AJAX調用而不是回發來啟動該過程。 因此,第一個調用將在服務器上的另一個線程上啟動該過程。 以下調用將僅使用處理線程與某種共享變量一起檢查進度。 該過程完成后,您可以進行回發以刷新頁面上的數據(如果需要)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM