1

I have a WCF method:

[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "exception")]
public void GenerateException()

I want to return a different fault based on the client (SOAP vs JSON) because they don't seem to have visibility to the message if I don't.

So I check the content type and choose my type accordingly

String ct = WebOperationContext.Current.IncomingRequest.ContentType;
FaultException fe = new FaultException(errorMessage, new FaultCode(errorCode));
WebFaultException<ErrorData> errorDataWebFault = new WebFaultException<ErrorData>   (errorData, System.Net.HttpStatusCode.InternalServerError);
if (ct.Contains("text/xml"))
            throw fe;
else//Can throw any of the WebFaultExceptions here
            throw errorDataWebFault;

If I don't check, SOAP consumers can't see the message of WebFaultExceptions, and JSON consumers cant see the message of the FaultException.

Is there a better way to do this? Feels like there should be something "built in".

cjburkha
  • 111
  • 3

0 Answers0