TIPS-Server.ScriptTimeout & <httpRuntime executionTimeout >
4 |
為了進行一些效能實驗,我試著要將ScriptTimeout的時間縮短,並故意用Thread.Sleep來製造Timeout。
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: //Set ScriptTimeout = 5 sec
4: Server.ScriptTimeout = 5;
5: //Sleep 20 seconds
6: System.Threading.Thread.Sleep(20000);
7: //Write log
8: using (System.IO.StreamWriter sw =
9: new System.IO.StreamWriter("d:\\temp\\bench.log", true))
10: {
11: sw.WriteLine(
12: string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}",
13: DateTime.Now
14: ));
15: sw.Close();
16: }
17: Response.Write("Done!");
18: Response.End();
19: }
測試發現,將Server.ScriptTimeout設成5秒無法造成Timeout Exception,後來我又試著修改web.config的<httpRuntime> executionTimeout Attribute,仍然無效。
Google到這篇文章,MS Online Support給了頗為詳細的說明,解開了謎團:
1) <compliation debug="true" />時,ScriptTimeout設定會被忽略。
2) 當Timeout小於1分鐘時,實際上將Delay 5-15秒,也就是說executionTimeout=5,實際上可能要15秒才算Timeout。
3) Server.ScriptTimeout是ASP時代的遺跡,屬於COM Interface,不建議使用,在ASP.NET中要設定Timeout時間請改用web.config 的<httpRuntime> executionTimeout屬性。
Comments
# by steve
>當Timeout小於1分鐘時,實際上將Delay 5-15秒,也就是說executionTimeout=5,實際上可能要15秒才算Timeout 感謝大師 到Google上找答案,找到這裡來了....... Keyword:Server.ScriptTimeout
# by derek
确实如此,不过不一定是小于1分钟,大于也会有延迟,没查到也没想到是什么原因,奇怪.....
# by Will 保哥
事實上是 ASP.NET Web Form Framework 在檢查 executionTimeout 時是有一個每 15 秒執行一次的 Timer 在運作著,每15秒才會觸發一次是否 Timeout 的檢查。
# by y
y