我介绍了在我们的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/
问题:为什么我看到这种行为,只有在调试时(我假设其他人没有)?我该如何避免这种行为?
答案 0 :(得分:1)
我不会称之为修复/解决方案,但我有一个非常适合我的情况的解决方法。
正如我所说,我刚刚启动了WCF异常处理,并且我意识到IErrorHandler是处理异常的更好方法,而不是方法级别的try / catch。
当调试器跳过ProvideFault的实现时,调试器不会查看异常,因此它不会导致CommunicationException。
这暂时有用,但我仍然想要一个真正的解决方案,因为在某些情况下我可能需要提供特定的异常,这些异常将通过ProvideFault不受影响。