文章出處

背景:

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屬性才會生效。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()