摘要:《ASP.NET AJAX 經典講座》逐步教學 #3:測試非同步呼叫逾時的狀況
《ASP.NET AJAX 經典講座》(以下均以「本書」稱之)第 3 章的圖 3-1 是非同步呼叫逾時的時候出現的訊息,這裡就來寫個簡單的測試程式,實際跑看看逾時的時候是否真的會出現這個訊息。
步驟
- 從 Visual Studio 2005 中開啟既有的 AJAX-enabled 網站,在網站中加入一個新網頁,命名為 TimeoutDemo.aspx。
- 從 Toolbox 拉一個 ScriptManager 和 UpdatePanel 至網頁上。
- 從 Toolbox 拉一個 Button 伺服器控制項至 UpdatePanel1 面板區域內。
- 雙擊 Button1 以撰寫 Click 事件處理常式,程式碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
}
這裡用 Thread.Sleep 方法模擬伺服器端需要 5 秒的處理時間。 - 由於 ScriptManager 的預設逾時時間是 90 秒,為了讓程式出現逾時的狀況,因此還要將 ScriptManager1 的 AsyncPostBackTimeout 屬性改成小於 5 秒。就改成 3 秒吧。
- 在瀏覽器中檢視 TimeoutDemo.aspx,然後點網頁中的按鈕。經過三秒之後,你就會看到如本書圖 3-1 所顯示的訊息("The server request timed out")。
這個練習非常簡單,並沒有什麼特殊的技巧,若要說有什麼需要注意的地方,應該就只有 timeout 時間該設多少才恰當。基本上這並沒有一個固定的答案,由於每個網頁上只能有一個 ScriptManager,因此你得根據該網頁在處理各個 request 時的最長處理時間,同時考慮網路流量尖峰時期造成的延遲,來決定網頁的適當 timeout 時間。
另外要提醒的是,當網頁 timeout 時,只是在用戶端片面終止後續的處理,原本在伺服器端執行中的作業並不會因此停掉,而是會繼續執行,直到其作業處理完畢。