using System; using System.Net; using System.Runtime.Serialization.Json; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using System.ServiceModel.Web; namespace Sony.Filtr.API.WCF { public class ErrorHandler : IErrorHandler { public bool HandleError(Exception error) { return false; } public void ProvideFault(Exception error, MessageVersion version, ref Message fault) { if (error is WebFaultException) return; ErrorMessageBody result = new ErrorMessageBody() { Message = "An internal server error occurred: " + error.ToString(), }; fault = Message.CreateMessage(version, "", result, new DataContractJsonSerializer(result.GetType())); var jsonFormatting = new WebBodyFormatMessageProperty(WebContentFormat.Json); fault.Properties.Add(WebBodyFormatMessageProperty.Name, jsonFormatting); var httpResponse = new HttpResponseMessageProperty() { StatusCode = HttpStatusCode.InternalServerError, StatusDescription = "", }; httpResponse.Headers[HttpResponseHeader.ContentType] = "application/json"; fault.Properties.Add(HttpResponseMessageProperty.Name, httpResponse); } public class ErrorMessageBody { public string Message { get; set; } } } }