0

我的系统由两个站点组成,它们之间使用 WCF 进行通信。有时,当一个站点在其对等点上调用操作时会引发异常,我试图确定在这种情况下使用 WCF 的 FaultContracts 的最佳方法是什么。

在过去的项目中,我习惯于创建一个重要的异常层次结构,例如:

BaseSystemException
    CustomerServiceException
        CustomerNotFoundException
        BadCustomerNameException
        CustomerAlreadyExistsException
        ...
    OrderServiceException
        OrderNotFoundException
        OrderAlreadyExistsException
        ...

但是,在 WCF 中实现这样的层次结构很快就会变得令人厌烦,因为我必须在其自己的 FaultContract 中指定每个具体的异常类型。现在,由于这两个服务都是同一个系统的一部分,所以不存在泄漏信息/敏感调用堆栈/等的问题。我希望 B 在其异常中提供尽可能多的信息,以便 A 可以做出相应的反应。我应该注意到,在实践中,这些异常中的许多都是以相同的方式处理的(操作失败并通知用户),但是在设计我的异常方案时,我不想假设对所有异常进行相同的处理。

任何人都可以建议一种不需要为每种异常类型使用 FaultContract 的方法吗?有没有更简单的方法?毕竟这是一个内部接口。我想使用异常层次结构是否过于理想化?

4

1 回答 1

0

您是否考虑过抛出FaultException?这不会破坏您的 WCF 服务,因此您的客户端可以处理异常。

编辑:

由于您想保留异常类型,我认为没有办法使用 FaultContracts。我唯一能建议的就是合并你的一些例外。

例如CustomerNotFoundException,并且BadCustomerNameException可能成为FailedToFetchCustomerException,然后消息可以传达原因。

于 2011-03-24T12:46:33.017 回答