IntelliTrace捕获到的无提示异常

时间:2010-10-20 18:11:23

标签: c# wcf intellitrace

下午好,

我遇到了WCF和IntelliTrace的一个奇怪的问题。我有一个应用程序,我正在使用basicHttpBinding使用本地托管的WCF端点(VS2010内置的开发服务器)进行测试。应用程序一直运行正常:没有异常进入应用程序并且所有WCF调用都返回数据。

在云端,我决定看一下IntelliTrace输出,并注意到我第一次调用WCF引发了两个异常:

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次尝试失败后它会成功?

感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

对于它的价值,我已经注意到我的IronPython / WPF应用程序的这种行为。我最终意识到Intellitrace只是向您显示在正常操作期间引发和捕获的所有异常,即使它是BCL或其他库的一部分。

当然,您只需要担心未处理的异常(在它们中断执行之后,您通常会将IntelliTrace中的那些视为Thrown: Caught: Thrown: Caught:的长链....一直到{{ 1}}这将是最后一行,因为没有捕获到异常。

我愿意打赌的是,WCF代码Thrown:首先是一些事情,捕获SocketExceptions,然后继续它的快乐方式。你永远不会看到这个,但是对于IntelliTrace:)