2017-06-12 123 views
0

我們有一個調用從Glabal.asax意外Thre​​adAbortException

功能與第三方通信的5分鐘(使用定時器)間隔後的功能,獲得數據並將其發送到另一個應用程序的更新的應用程序數據庫。

在第4次或第5次調用函數之後,在從第三方應用程序接收數據時調用ThreadAbortException。這會停止整個應用程序。

我們不使用Response.End,Response.Redirect或Server.Transfer,它們是導致ThreadAbortException的函數。

應用程序池可能會重新啓動/回收。但是,這可能是什麼原因? 我改變了超時爲0,這意味着它永遠不會超時。但我仍然得到例外。

任何人都可以提出任何建議嗎?

謝謝。

+0

這聽起來像你試圖[運行在asp.net後臺任務(HTTPS://www.hanselman。 com/blog/HowToRunBackgroundTasksInASPNET.aspx) –

+0

不是我所知道的。如何找到那個?那麼解決方案是什麼? – Dhanashree

+0

您是否試圖定期運行與任何實際請求無關的代碼?如果是這樣,那麼將是一個後臺任務。我已經將您的博客文章與您聯繫起來,討論了各種方式。使用某種形式的「計時器」(您正在使用哪種計時器尚不清楚)不在列表中,原因也在該帖子中討論過。 –

回答

0

我正在使用WebRequest對象向第三方發出請求。 問題的解決方案是更改請求的超時值。我將其改爲無限。

WebRequest request = WebRequest.Create(serviceUrl); 
request.Method = "POST"; 
request.Timeout = System.Threading.Timeout.Infinite; 

我希望這可以幫助遇到類似情況的人。儘管我的同事幫助過我。

編輯 - 我還發現在MSDN上一篇有趣的文章 - Understanding WebRequest Problems and Exceptions