2

こんにちは、

WCFとIntelliTraceで奇妙な問題が発生しています。basicHttpBindingを使用して、ローカルでホストされているWCFエンドポイント(VS2010に組み込まれている開発サーバー)を使用してテストしているアプリケーションがあります。アプリケーションは正常に実行されています。例外はアプリに到達しておらず、すべてのWCF呼び出しがデータを返しています。

ひばりで、私はIntelliTraceの出力を見ることにし、WCFへの最初の呼び出しが2つの例外をスローすることに気づきました。

Exception:Thrown: "No connection could be made because the target machine actively refused it" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was thrown: "No connection could be made because the target machine actively refused it"
Exception:Caught: "No connection could be made because the target machine actively refused it" (System.Net.Sockets.SocketException)
A System.Net.Sockets.SocketException was caught: "No connection could be made because the target machine actively refused it"

アプリケーションを簡単なユースケースに減らしました。

    ServiceClient client = new ServiceClient();
    string[] output = client.LegacyCheck("username");
    Console.WriteLine(output[0]);
    Console.WriteLine(client.GetData(65));

そして、私は同じ振る舞いをします。2番目の呼び出しには、それに関連する例外はありません。

私はとても困惑しています。接続が拒否されている場合、なぜ例外がアプリケーションに到達しないのですか?そして、2回失敗した後に成功するのはなぜですか?

どんな助けでも大歓迎です!

4

1 に答える 1

3

その価値については、IronPython/WPFアプリケーションでもこの動作に気づきました。私は最終的に、Intellitraceが、BCLまたは他のライブラリの一部であっても、通常の操作中に発生してキャッチされたすべての例外を表示しているだけであることに気付きました。

もちろん、未処理の例外についてのみ心配する必要があります(実行が中断された後は、通常、IntelliTraceの例外は、例外が最後の行になるThrown: Caught: Thrown: Caught:までの長いチェーンとして表示されます。Thrown:捕まえられない。

私が賭けても構わないと思っているのは、WCFコードtryが最初にいくつかのことを行い、SocketExceptionsをキャッチしてから、その陽気な道を続けることです。これは表示されませんが、IntelliTraceの場合:)

于 2010-10-20T18:25:55.130 に答える