我正在介绍FaultException在我们的WCF服务中的使用。
为了测试这一点,我在服务器上创建了以下函数:
public void ThrowException()
{
try
{
throw new ApplicationException("This is a test exception");
}
catch (ApplicationException ex)
{
throw new FaultException<ApplicationException>(ex, "Test reason");
}
}跳过一步。如果我运行它,它工作得很好。
但是,如果我使用调试器(VS2008),并允许代码在catch块中中断(通过启用break on exception或单步执行),我的客户机会生成一个CommunicationException。
在调查这个问题时,我发现了这个论坛帖子:http://social.msdn.microsoft.com/forums/en-US/wcf/thread/d1ae669f-9a62-4628-86c1-c15ff4068843/
问:为什么我只有在调试时才会看到这种行为(我假设其他人没有)?我该如何避免这种行为呢?
发布于 2009-04-16 09:16:08
我不会称之为修复/解决方案,但我有一个非常适合我的情况的变通方法。
正如我所说的,我刚刚开始处理WCF异常,我意识到IErrorHandler是处理异常的更好的方法,而不是方法级别的try/catch。
当调试器跳过ProvideFault的实现时,调试器不会查看异常,因此不会导致CommunicationException。
目前这是可行的,但我仍然希望有一个真正的解决方案,因为在某些情况下,我可能希望提供特定的异常,这些异常将通过ProvideFault原封不动地传递。
https://stackoverflow.com/questions/752633
复制相似问题