C# WCF服务:响应对象中的故障异常与错误消息

C# WCF服务:响应对象中的故障异常与错误消息,c#,wcf,web-services,exception-handling,C#,Wcf,Web Services,Exception Handling,在WCF层发生任何异常时,WCF服务会发送故障异常,我一直在内部应用程序使用的WCF服务中广泛使用它,但我不确定是否有外部客户端 场景 假设我创建了一个WCF服务,该服务将通过互联网向我的客户公开,我将为每个服务呼叫收费。可以从服务返回不同的错误消息(身份验证失败/授权失败/验证错误) 我正在考虑以下两种方法 故障异常:创建一个通用的ErrorHandler,它实现IErrorHandler,为每种错误抛出故障异常。然后客户端将不得不在其末端处理故障异常,在我看来有点复杂 响应DTO:响应DTO

在WCF层发生任何异常时,WCF服务会发送故障异常,我一直在内部应用程序使用的WCF服务中广泛使用它,但我不确定是否有外部客户端

场景

假设我创建了一个WCF服务,该服务将通过互联网向我的客户公开,我将为每个服务呼叫收费。可以从服务返回不同的错误消息(身份验证失败/授权失败/验证错误)

我正在考虑以下两种方法

故障异常:创建一个通用的ErrorHandler,它实现IErrorHandler,为每种错误抛出故障异常。然后客户端将不得不在其末端处理故障异常,在我看来有点复杂

响应DTO:响应DTO将使用错误详细信息填充iError、ErrorMessage、ErrorCode等属性。这对客户来说可能很容易,因为他们只需检查一些bool变量,以确定是否存在任何错误

这就是问题


是否应该从WCF发送响应对象内部的故障异常或错误消息?每种方法的优点/缺点是什么?

在我目前从事的项目中,我们正在开发一种可公开访问的API。我们正在创建一个响应DTO,以将预期的错误消息传递给自定义服务器。然后,我们将故障异常包装在所有其他内容周围,并使用客户标识符(apikey)记录错误。客户将得到一个没有实际细节的故障异常,但使用该客户apikey,我们应该能够找到并解决特定问题

感谢Aaron+1,(在接受它作为答案之前等待其他人)您是否也在响应中发送验证错误DTOWe是否根据我们的业务规则和我们想要揭示的内容发送一些基本验证响应。然而,对于大多数请求,我们只是告诉他们错误的请求对象。我们记录具体错误,然后如果/当他们与我们联系问题时,我们可以帮助他们排除故障。然而,我们的目标是希望通过我们的代码示例和文档,他们不需要做那么多。我已经重新表述了这个问题,请告诉我它是否符合指导原则