下午好,
我遇到了一个关于WCF和IntelliTrace的奇怪的问题。我有一个正在使用本地托管的WCF端点(内置到VS2010中的开发服务器)使用basicHttpBinding进行测试的应用程序。应用程序一直在正常运行:没有异常正在向应用程序发送,所有的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));我得到了同样的行为。第二个调用没有关联的异常。
我很迷惑。如果连接被拒绝,那么为什么异常不对应用程序进行补偿呢?为什么在两次失败的尝试后它会成功?
如有任何帮助,我们不胜感激!
发布于 2010-10-21 02:25:55
无论如何,我在我的IronPython/WPF应用程序中也注意到了这种行为。我最终意识到,Intellitrace只是向您展示了在正常操作过程中引发和捕获的所有异常,即使它是BCL或其他库的一部分。
当然,您只需要担心未处理的异常(在它们中断您的执行之后,您通常会在IntelliTrace中看到这些异常是一长串Thrown: Caught: Thrown: Caught:……一直到Thrown:,这将是最后一行,因为没有捕获到异常。
我敢打赌的是,WCF代码try首先要做的是几件事,捕获SocketExceptions,然后继续它的快乐之路。
https://stackoverflow.com/questions/3980951
复制相似问题