我們做web服務器端開發時,經常會遇到一個需求場景,因為某些耗時處理造成頁面的響應處理時間超長,技術角度就想能否給頁面處理程序一個指定的超時時間,服務端處理程序執行時間超過這個指定的超時時間則中斷處理,直接返回響應,以防止服務器端宿主的吞吐隊列堆積,造成全站癱瘓。
asp.net中,有這么一個方便的東西,他就是ExecutionTimeout 。
相關背景
ExecutionTimeout 屬性(
http://msdn.microsoft.com/zh-cn/library/vstudio/system.web.configuration.httpruntimesection.executiontimeout(v=vs.100).aspx)
ExecutionTimeout 屬性指示在請求被 ASP.NET 自動關閉前允許執行的最大秒數。 默認值為 110 秒。 只有當 <compilation> 元素中的調試特性設置為 false 時,此超時屬性才適用。
如果超時過期,則引發異常。 您可以在事件日志的 Application 文件夾中記錄相關的信息。 通過在<healthMonitoring> 配置元素中啟用應用程序狀況監視來執行此操作。
經測試驗證發現:
ASP.NET Webform項目的中ExecutionTimeout 生效。
ASP.NET MVC3中項目中中ExecutionTimeout 不生效。
MVC項目讓ExecutionTimeout 生效的解決方案
web.config



目前只在最終頁請求處理controller里落地,未來可以放到basecontroller里
