2017-06-12 157 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