2009-10-19 60 views
2

很長時間ASP.NET Webforms開發人員,Ajax開發的新手(主要通過UpdatePanel控件!)。ASP.NET AJAX並保持會話活着 - 執行它的標準方式是什麼?

由於沒有發生回發,服務器不會重置用戶的會話超時計數器,即使用戶正在與頁面交互並刷新其中的一部分。

我想知道當使用UpdatePanel開發Ajax時,保持ASP.NET會話活着的最簡單和最標準的方法;

請在答案中提供代碼和/或鏈接;我搜索的內容是關於框架,JQuery,JSON以及任何一個月縮寫詞的味道,我不需要任何花哨,只是簡單的標準方式,我不在乎它是否沒有優化等等。 : - |

+4

使用ASP.Net更新面板時仍有回傳。唯一的區別是隻有更新面板中的控件纔會更新。在頁面加載事件中放置一個斷點,你會發現一切仍然正常。 – GenericTypeTea 2009-10-19 08:08:41

+0

那麼你是說我不需要做任何事情來重置超時時間?由於回發已經發生,它已經被重置? – joedotnot 2009-10-19 09:35:33

回答

1

As GenericTypeTea評論說,使用.NET AJAX和UpdatePanel時有服務器端回發。唯一的區別是整個頁面沒有加載。所有服務器端代碼都是正常觸發的,但是使用AJAX技術以不同方式在服務器和頁面之間發送信息。

您甚至可以使用.NET調用PageMethods的機制從客戶端JavaScript調用服務器端方法。與傳統的UpdatePanel技術相比,這是在.NET中使用AJAX的更「手動」方式。

+1

重複上面的評論:那麼你是說我不需要做任何事情來保持重置超時時間?由於回發已經發生,它已經被重置? – joedotnot 2009-10-19 09:38:00

+0

是的。如果在這種情況下會話不會繼續存在,這將是微軟的一個可怕的設計缺陷......您是否遇到過一些實際問題,或者您是否認爲這會是一個問題? – awe 2009-10-19 09:51:44

+0

我有一個需要調查的bug,所以想通過理解標準行爲來提前;您的回覆告訴我使用UpdatePanel和Ajax不是問題。我將在未來幾天內提供更新。謝謝。 – joedotnot 2009-10-19 10:02:08

0

我會說使用隱藏的iframe進行通信將是最簡單的方法,最簡單。 http://weblogs.asp.net/stephensonger/archive/2009/04/22/keeping-asp-net-sessions-alive.aspx 有一個很好的例子,你可以擴展。

+0

我看不出你的例子與Ajax有關。除了我不想讓頁面一直重置超時時間外,重置應該僅在真正的用戶交互時發生 - 無論是通過回發還是Ajax局部頁面刷新。 – joedotnot 2009-10-19 09:54:48

+0

隱藏的iframe可以提供最有效的方法來實現需要更新服務器的保持活動功能。 您可以使用ScriptManager的RegisterStartupScript方法通過任何基本的javascript函數與隱藏的iframe進行通信。然後你可以通過JavaScript /服務器端回調來管理你的會話。 或者,您最好使用jQuery或類似的服務,並使用$ .post(..)方法來實現ajax通信/功能。 – 2009-10-19 15:54:38