private IEnumerable<OutputMember> TryExecute(Func<IEnumerable<OutputMember>> operationBuilder) { try { return operationBuilder(); } catch (Exception ex) { var validationException = ex.GetBaseException() as ValidationException; if (validationException != null) { var responseBody = new ResponseForProcessingError(validationException); LogBadRequest(responseBody); return new[] { new OutputMember { Value = new OperationResult.BadRequest { ResponseResource = responseBody } } }; } throw; } }
private void RespondWithBadRequest(HttpActionExecutedContext context) { var validationException = context.Exception as ValidationException; var response = new ResponseForProcessingError(validationException); LogBadRequest("Request pre-condition(s) failed", context, response); // we intentionally don't use context.Request.CreateErrorResponse, so that we can customise the response body. Otherwise it's too limited. context.Response = context.Request.CreateResponse(HttpStatusCode.BadRequest, response); }