private static FaultCollection GenerateFaultCollection(IServiceContext context, HttpResourceFaultException faultException) { var validationErrors = new List<ValidationError>(); validationErrors.AddRange(faultException.FaultMessages.Where(m => !String.IsNullOrEmpty(m)).Select(m => new ValidationError(m))); validationErrors.AddRange(context.Request.ResourceState ?? new ResourceState(new ValidationError[0])); if (validationErrors.Count == 0) { return new FaultCollection(); } return new FaultCollection { General = validationErrors.Where(e => String.IsNullOrEmpty(e.PropertyName)).Select(e => new Fault { PropertyName = e.PropertyName, Message = e.Message }).ToArray(), Resource = validationErrors.Where(e => !String.IsNullOrEmpty(e.PropertyName)).Select(e => new Fault { PropertyName = e.PropertyName, Message = e.Message }).ToArray() }; }
private static void OutputValidationFaults(HttpApplication application, HttpResourceFaultException faultException) { var context = Rest.Configuration.ServiceLocator.GetService<IServiceContext>(); FaultCollection faults = GenerateFaultCollection(context, faultException); if (faults.General.Length == 0 && faults.Resource.Length == 0) { return; } OutputFaults(application, HttpStatusCode.BadRequest, Global.ResourceValidationFailed, faults); }