代码之家  ›  专栏  ›  技术社区  ›  MattH

调试WCF异常会导致CommunicationException

  •  1
  • MattH  · 技术社区  · 16 年前

    我将在我们的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块中中断(通过启用break-on-exception,或通过介入该块),我的客户机将生成一个communicationexception。

    通过调查,我找到了这个论坛帖子: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/d1ae669f-9a62-4628-86c1-c15ff4068843/

    问题:为什么只有在调试时才会看到这种行为(我假设其他人没有)?我怎样才能避免这种行为呢?

    1 回复  |  直到 16 年前
        1
  •  1
  •   MattH    16 年前

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

    正如我所说,我刚开始处理WCF异常,我意识到 IErrorHandler 是处理异常的更好方法,而不是方法级别的Try/Catch。

    当调试器跳过providefault的实现时,调试器不会查看异常,因此不会导致通信异常。

    目前这是可行的,但我仍然希望得到一个真正的解决方案,因为在某些情况下,我可能希望提供特定的异常,而这些异常不会通过providefault传递。