意外ThreadAbortException
问题描述:
我们有一个调用从Glabal.asax意外ThreadAbortException
功能与第三方通信的5分钟(使用定时器)间隔后的功能,获得数据并将其发送到另一个应用程序的更新的应用程序数据库。
在第4次或第5次调用函数之后,在从第三方应用程序接收数据时调用ThreadAbortException。这会停止整个应用程序。
我们不使用Response.End,Response.Redirect或Server.Transfer,它们是导致ThreadAbortException的函数。
应用程序池可能会重新启动/回收。但是,这可能是什么原因? 我改变了超时为0,这意味着它永远不会超时。但我仍然得到例外。
任何人都可以提出任何建议吗?
谢谢。
答
我正在使用WebRequest对象向第三方发出请求。 问题的解决方案是更改请求的超时值。我将其改为无限。
WebRequest request = WebRequest.Create(serviceUrl);
request.Method = "POST";
request.Timeout = System.Threading.Timeout.Infinite;
我希望这可以帮助遇到类似情况的人。尽管我的同事帮助过我。
编辑 - 我还发现在MSDN上一篇有趣的文章 - Understanding WebRequest Problems and Exceptions
这听起来像你试图[运行在asp.net后台任务(HTTPS://www.hanselman。 com/blog/HowToRunBackgroundTasksInASPNET.aspx) –
不是我所知道的。如何找到那个?那么解决方案是什么? – Dhanashree
您是否试图定期运行与任何实际请求无关的代码?如果是这样,那么将是一个后台任务。我已经将您的博客文章与您联系起来,讨论了各种方式。使用某种形式的“计时器”(您正在使用哪种计时器尚不清楚)不在列表中,原因也在该帖子中讨论过。 –