【发布时间】:2015-04-27 20:32:19
【问题描述】:
最近我开始收到带有以下堆栈跟踪的警报:
消息:线程被中止。
堆栈跟踪:在 System.Net.Connection.CompleteStartConnection(Boolean 异步,HttpWebRequest httpWebRequest)在 System.Net.Connection.CompleteStartRequest(布尔 onSubmitThread, HttpWebRequest 请求,TriState 需要重新连接)在 System.Net.Connection.SubmitRequest(HttpWebRequest 请求,布尔值 强制提交)在 System.Net.ServicePoint.SubmitRequest(HttpWebRequest 请求,字符串 connName) 在 System.Net.HttpWebRequest.SubmitRequest(ServicePoint servicePoint) 在 System.Net.HttpWebRequest.GetResponse() 在 删除以保护身份
在我看来,在与远程服务器建立实际连接之前,该线程已中止。真的吗?为什么会出现这种情况——试图缩小问题范围。
我尝试查找有关 System.Net.Connection.CompleteStartConnection 方法的文档,但找不到任何东西。有什么想法吗?
更新:添加调用代码的结构以响应 cmets。
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:我尚未提供的一条重要信息 - 我在更新 1 中显示的那段代码正在被计时器上的任务调用。
【问题讨论】:
-
导致此异常的(相关)代码段是什么样的?
-
@ArxoClay 我想他们想看看实际的代码,而不是你描述它:)
-
当服务调用结束而异步操作仍在发生时,就会发生类似的事情。请注意以下内容:hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
-
我会把你发布的代码放在
Task或Thread中运行。您的 ASMX 页面在该任务或线程完成之前完成其响应。 IIS 会关闭正在运行您的代码的 AppDomain(包括尚未完成的后台进程),您会收到错误消息。这都是猜测,因为您没有显示您的代码,这就是我没有发布答案的原因。请阅读帖子Moby Disk linked 更详细的内容 -
@ArxoClay 是的,超时只是应用程序池可以重新循环的众多原因之一。
标签: c# .net threadabortexception