I understand the concept of Fault Contracts in WCF, but they seem to be tightly coupled to WCF and SOAP in particular. I've created a set of services that are separate from the contract definitions and the implementations could be used in many ways, not just WCF/SOAP. For instance, if I wanted to create a RESTful service, or just use the services implementation directly from an application.
But now I'm working on error handling and it seems that as soon as I introduce FaultContract and FaultException into the service code, I'm now tightly bound to SOAP services. In my case, SOAP is the target wire format right now, and so I want to produce a SOAP fault.
What methods are people using in WCF to produce SOAP faults, but not couple the implementation to FaultContract?