Asp.Net正在中止執行緒引發的問題

oec2003發表於2013-11-22

背景:

Asp.Net做的一個同步程式,同步的方法是通過JQuery的Ajax呼叫,同步過程大概要執行20多分鐘,程式部署到伺服器後執行一段時間後就彈出執行失敗的對話方塊,日誌記錄的錯誤資訊是“正在中止執行緒”。

查錯過程:

1、根據“AspNet 正在中止執行緒“進行搜尋,得到的結果基本都是跟”Response.End“有關的,但我的程式碼中沒有Response.End,所以基本可以排除;

2、因為使用JQuery的Ajax,所以猜想會不會是因為Ajax超時導致,修改程式碼將返回狀態彈出:

發現返回的status為”error“,也嘗試過將timeout設定為一個較大值,發現問題依然存在,所以可以排除是JQuery Ajax超時;

3、使用Fiddler2進行監控,發現執行一段時間後報了500錯誤,顯示的錯誤詳細資訊如下圖:

到了這一步就好辦了,可以知道是httpRuntime超時了,配置Webconfig就可以了,如下圖:

設定好好後發不到伺服器,再次執行程式,問題解決。

奇怪的是在本機執行的時候即使沒有設定executionTimeout也不會出現問題,原因是在本機的Webconfig中的compilation節點的有個debug屬性設定為true,釋出後的Webconfig中的compilation沒有debug節點,當debug屬性為false時,httpRuntime的executionTimeout屬性才會生效。

相關文章