2

最近、次のスタック トレースでアラートを受け取り始めました。

メッセージ: スレッドは中止されました。

スタック トレース: System.Net.Connection.CompleteStartConnection(Boolean async, HttpWebRequest httpWebRequest) で System.Net.Connection.CompleteStartRequest(Boolean onSubmitThread, HttpWebRequest request, TriState needReConnect) で System.Net.Connection.SubmitRequest(HttpWebRequest request, Boolean forcedsubmit) ) で System.Net.ServicePoint.SubmitRequest(HttpWebRequest request, String connName) で System.Net.HttpWebRequest.SubmitRequest(ServicePoint servicePoint) で System.Net.HttpWebRequest.GetResponse() で 削除され、ID を保護します

リモートサーバーとの実際の接続が確立される前に、スレッドが中止されたようです。本当?なぜそのような状況が発生するのか - 問題を絞り込もうとしています。

メソッドに関するドキュメントを探してみましたが、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: まだ提供していない重要な情報 - 更新 1 で表示したコードの一部は、タイマー上のタスクによって呼び出されています。

4

2 に答える 2

0

私は以前にこの問題に対処しましたが、通常、これはクライアントを介してサービスを呼び出すコードまたはサービス自体が呼び出していることを示していますThread.Abort()(これは悪い習慣ですが、接続が開いたままになる可能性があるという事実を軽減するために使用されます)サーバー上)。ThreadAbortExceptionsサービス呼び出しは、スレッドが明示的に中止するように指示されたときに主に発生します。

サーバーがスレッドを中止している場合、通常はSoapException. したがって、コードベースで の使用法を確認してくださいThread.Abort()

于 2015-04-27T20:49:36.967 に答える
0

この問題の解決を手伝ってくれた @Moby Disk と @Scott Chamberlain に感謝します。

この問題は、私が作成したコードをホストしているアプリケーション プールのリサイクル設定で、定期的な時間間隔 (分)1740分(既定値) に設定されているために発生しました。

このようなリサイクル中にワーカー スレッドが実行されているときはいつでも、エラーが表示されます (処理されなかった ThreadAbort 例外を受け取るため)。設定を修正すると問題が解決しました。

于 2015-04-28T23:25:15.573 に答える