[ASP.NET] 解決IE10 (2008R2)限定版頁面事件逾時問題
這個問題著實令人不解,簡單描述一下發生情境跟暫時解決方法
發生情境
假定程式無錯誤的情況下,在一個長時間超過10分鐘以上作業的頁面裡,當你最後收到【無法顯示頁面】的訊息時,那麼請確認一下您的環境是否符合以下條件,若是則可以暫時以本文提到的方式處理
使用者環境
(1) 作業系統:Windows 2008R2
(2) Internet Explorer:IE10
(3)頁面TimeOut並非因資料庫連線或Session Timeout所引起的現象
(4)以其它瀏覽器可以順利處理完頁面請求並返回正確結果頁面
模擬程式碼
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
</form>
</body>
</html>
{
//模擬等待10分鐘
System.Threading.Thread.Sleep(600000);
}
按下Button,執行事件經過10分鐘後,發生以下現象
解決方式
(1)進入系統註冊檔
(2)找到[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]目錄
(3)在右方視窗找到ReceiveTimeout,預設值為600000,即為10分鐘
(4)點選ReceiveTimeout,右鍵 / 修改 / 選擇十進位 / 修改數值資料,把預設值拉長
(5)重新啟動Internet Explorer
結論
目前筆者並無法得知為何在IE10 For Windows 2008R2版本裡,會有如此的預設值以其原因,檢視Windows 8 裡的IE10以及其它IE9版本,並無此設定值,而此設定值將會造成頁面等待時間在超出設定值時變成【無法顯示頁面】的情況,而後續版本是否會有所改變目前仍不得而知,此外IE屬於Client端的載具,事實上開發者並無法要求使用者去修改系統註冊檔,這也是筆者把修改註冊檔稱為暫時解決方法的主要原因。
reference :
By No.18