如何在不耦合FaultContract的情况下,WCF服务实现如何处理错误/故障

时间:2010-09-24 17:34:00

标签: .net wcf rest soap

我理解WCF中故障契约的概念,但它们似乎与WCF和SOAP紧密耦合。我已经创建了一组与合同定义分开的服务,并且实现可以以多种方式使用,而不仅仅是WCF / SOAP。例如,如果我想创建RESTful服务,或者只是直接从应用程序使用服务实现。

但是现在我正在处理错误处理,似乎只要我将FaultContract和FaultException引入服务代码,我现在就紧紧地绑定到SOAP服务。就我而言,SOAP现在是目标有线格式,所以我想产生一个SOAP错误。

人们在WCF中使用哪些方法来产生SOAP错误,但是没有将实现耦合到FaultContract?

2 个答案:

答案 0 :(得分:3)

如果要抛出预期的异常,请在操作中使用FaultContract。您将获得一些在您的操作中使用的一小组FaultContracts。当您需要添加非SOAP端点时,您可以在自定义端点行为中使用IErrorHandler实现,并将抛出的FaultExceptions转换为您需要的格式。 Here你有一些JSON的例子。

答案 1 :(得分:1)

要将错误处理与服务实现解耦,请让您的服务实现IErrorHandler。这允许您在服务代码中引入标准.NET异常。 IErrorHandler行为将它们转换为服务级别的SOAP错误。

网上有很多例子。我最喜欢的是here,因为我实际上犯了同样错误的错误行为,他指出了如何修复。

相关问题