KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a set of SOAP webservices that are wrapping exceptions using IErrorHandler, specifically: public sealed class ErrorHandler : IErrorHandler { public bool HandleError(Exception error) { return true; } public void ProvideFault(Exception error, MessageVersion version, ref Message fault) { // don't wrap existing fault exceptions if ((error is FaultException)) return; // our basic service fault var businessFault = new BusinessFault { FaultMessage = error.Message, FaultReference = "Internal" }; // Resource based faultReason var faultReason = new FaultReason(Properties.Resources.BusinessFaultReason); var faultcode = FaultCodeFactory.CreateVersionAwareSenderFaultCode(InternalFaultCodes.BusinessFailure.ToString(), Service.Namespace); var faultException = new FaultException<BusinessFault>( businessFault, faultReason, faultcode); // Create message fault var messageFault = faultException.CreateMessageFault(); // Create message using Message Factory method fault = Message.CreateMessage(version, messageFault, faultException.Action); } } I have now added extra endpoints for Json and Pox which work fine, unless an exception occurs. In the case of the Json endpoint the FaultException is returned as XML. I am aware from other SO posts that in the case of REST I would be better throwing a WebHttpException: throw new WebFaultException<BusinessFault>(detail, HttpStatusCode.BadRequest); Or overriding the response message properties in ProvideFault, thus: var wbf = new WebBodyFormatMessageProperty(WebContentFormat.Json); fault.Properties.Add(WebBodyFormatMessageProperty.Name, wbf); var rmp = new HttpResponseMessageProperty { StatusCode = System.Net.HttpStatusCode.BadRequest, StatusDescription = "See fa
Tags (comma-separated)
Save Edits
Cancel