调试WCF异常会导致CommunicationException

时间:2009-04-15 16:45:59

标签: visual-studio-2008 wcf debugging

我介绍了在我们的WCF服务中使用FaultException。

为了测试这一点,我在服务器上创建了以下功能:

public void ThrowException()
    {
        try
        {
            throw new ApplicationException("This is a test exception");
        }
        catch (ApplicationException ex)
        {
            throw new FaultException<ApplicationException>(ex, "Test reason");

        }
    }

向前迈出一步。如果我坚持这一点,它就可以正常工作。

但是,如果我使用调试器(VS2008),并允许代码在catch块中断(通过启用异常中断或通过单步执行),我的客户端将生成一个CommunicationException。

调查此我发现此论坛帖子: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/d1ae669f-9a62-4628-86c1-c15ff4068843/

问题:为什么我看到这种行为,只有在调试时(我假设其他人没有)?我该如何避免这种行为?

1 个答案:

答案 0 :(得分:1)

我不会称之为修复/解决方案,但我有一个非常适合我的情况的解决方法。

正如我所说,我刚刚启动了WCF异常处理,并且我意识到IErrorHandler是处理异常的更好方法,而不是方法级别的try / catch。

当调试器跳过ProvideFault的实现时,调试器不会查看异常,因此它不会导致CommunicationException。

这暂时有用,但我仍然想要一个真正的解决方案,因为在某些情况下我可能需要提供特定的异常,这些异常将通过ProvideFault不受影响。