我理解WCF中的错误契约的概念,但它们似乎与WCF和SOAP紧密耦合。我已经创建了一组独立于约定定义的服务,这些实现可以以多种方式使用,而不仅仅是WCF/SOAP。例如,如果我想创建一个RESTful服务,或者只是直接从应用程序使用服务实现。
但是现在我正在处理错误,似乎只要我在服务代码中引入FaultContract和FaultException,我现在就与SOAP服务紧密绑定在一起。在我的例子中,SOAP是现在的目标连接格式,所以我想产生一个SOAP错误。
人们在WCF中使用什么方法来产生SOAP错误,而不是将实现耦合到FaultContract?
发布于 2010-09-25 03:51:32
为了将错误处理与您的服务实现分离,让您的服务实现IErrorHandler。这允许您在服务代码中抛出标准的.NET异常。IErrorHandler行为将它们转换为服务级别的SOAP错误。
网上有很多这样的例子。我最喜欢的是here,因为我实际上在错误操作上犯了同样的错误,他指出了如何修复。
发布于 2010-09-25 03:31:11
如果您想抛出预期的异常,请在操作中使用FaultContract。您将获得一些在操作中使用的小FaultContracts集。当您需要添加非SOAP端点时,您可以在自定义端点行为中使用IErrorHandler实现,并将抛出的FaultExceptions转换为所需的格式。你有一些关于Here的例子。
https://stackoverflow.com/questions/3789556
复制相似问题