2012-10-30 26 views
1

所有,當使用ASP.Net UpdatePanel中,從彈出窗口請求被阻塞

我有一個使一對夫婦長期運行的請求,收集了大量的數據的一個UpdatePanel。有時需要長達90秒才能返回。

第一個請求返回呈現爲文檔鏈接的數據。單擊該鏈接將打開一個新的瀏覽器窗口,該URL有一個查詢字符串,用於告知系統打開哪個文檔。

這裏是一個代碼剪斷渲染的鏈接,客戶端時:

HtmlAnchor alink = new HtmlAnchor(); 
alink.HRef = "javascript:openDocument('"+ item.Url +"')"; //item.Url; 

// here is the JS on the client page 
function openDocument(path) { 
    window.open(path); 
} 

所以,當用戶點擊鏈接,彈出窗口不開放。問題在於,在彈出窗口發送請求之前,它一直等到UpdatePanel完成其請求。

我可以複製彈出窗口中的URL,打開一個新的瀏覽器,然後將URL粘貼到新的瀏覽器中,並按預期打開文檔。

這使我相信UpdatePanel以某種方式阻止了彈出窗口的請求。我寧願不讓用戶等到UpdatePanel的AJAX請求完成,然後用戶才能從第一個結果中打開文檔。

我該如何解決這種堵塞問題?我已經嘗試在UpdatePanel的ContentArea之外創建按鈕並模擬點擊,但是沒有像這樣的工作。

有沒有人有這方面的想法?

在此先感謝!

+0

請求是如何提出的?通過回傳?你有沒有嘗試過直接向aspx文件實施javascript代碼? – UNeverNo

回答

1

原因是頁面正在使用會話狀態,因此任何請求都會阻止共享相同會話密鑰的所有其他請求。

如果您的頁面沒有寫入會話,那麼您可以將IReadOnlySessionState屬性應用於它們,以便它們僅在非只讀請求時阻止,而不是在所有併發請求都使用只讀會話的​​情況下阻止。

public class YourPage: Page, IReadOnlySessionState { ... } 
+0

這正是修復!非常感謝你! – richb01

相關問題