文章出處
文章列表
背景:
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屬性才會生效。
文章列表
全站熱搜