public static void SetResponseStatusAndJsonError(HttpContext httpContext, string statusCode, string statusDescription) { SetResponseStatus(httpContext, statusCode, statusDescription); if (httpContext != null) //<serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> web.config { httpContext.Response.ContentType = MediaTypesNames.ApplicationJson; var jsonError = new WrappedJsonError() { Error = new HttpJsonError() { Code = statusCode, Message = statusDescription } }; httpContext.Response.Write(JSONHelper.Serialize(jsonError)); } #if !NETCORE else { var wcfcontext = WebOperationContext.Current; wcfcontext.OutgoingResponse.ContentType = MediaTypesNames.ApplicationJson; JsonFault jsonFault = new JsonFault(statusDescription, statusCode); throw new FaultException <JsonFault>(jsonFault, new FaultReason(statusDescription)); } #endif }
protected virtual Message GetJsonFaultMessage(MessageVersion version, Exception error) { BaseFault detail = null; var knownTypes = new List<Type>(); string faultType = error.GetType().Name; //default if ((error is FaultException) && (error.GetType().GetProperty("Detail") != null)) { detail = (error.GetType().GetProperty("Detail").GetGetMethod().Invoke( error, null) as BaseFault); knownTypes.Add(detail.GetType()); faultType = detail.GetType().Name; } var jsonFault = new JsonFault { Message = error.Message, Detail = detail, FaultType = faultType }; var faultMessage = Message.CreateMessage(version, "", jsonFault, new DataContractJsonSerializer(jsonFault.GetType(), knownTypes)); return faultMessage; }