最近,我开始收到具有以下堆栈跟踪的警报:
消息:线程正在中止。
堆栈跟踪:位于System.Net.Connection.CompleteStartConnection(布尔异步,HttpWebRequest httpWebRequest)(位于System.Net.Connection.CompleteStartRequest(布尔onSubmitThread,HttpWebRequest请求,TriState needReConnect)位于System.Net.Connection.SubmitRequest(HttpWebRequest请求,布尔强制提交) )在System.Net.HttpWebRequest.GetResponse()处的System.Net.HttpWebRequest.SubmitRequest(ServicePoint servicePoint)处的System.Net.ServicePoint.SubmitRequest(HttpWebRequest请求,字符串connName)处已删除以保护身份
在我看来,在与远程服务器进行实际连接之前,线程已中止。真的吗?为什么会发生这种情况-试图缩小问题的范围。
我试图寻找有关该System.Net.Connection.CompleteStartConnection
方法的文档,但找不到任何东西。有任何想法吗?
更新:添加响应注释的调用代码的结构。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = method; request.ContentType = "application/xml";
request.Headers.Add("Foo", "Bar");
request.Proxy = new System.Net.WebProxy(proxyAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
更新2:此警报仅偶尔发生几分钟,然后消失。
更新3:我尚未提供的重要信息-我在UPDATE 1中显示的代码正在由计时器上的任务调用。
非常感谢@Moby Disk和@Scott Chamberlain帮助我解决了这个问题。
造成此问题的原因是,托管我编写的代码的应用程序池的“回收”设置将“常规时间间隔”(分钟)设置为1740分钟,相当于29小时(默认值)。
每当工作线程在这样的循环期间运行时,我都会看到错误(因为它将收到一个ThreadAbort异常,但它没有处理)。修复设置可以解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句