public override void OnActionExecuting(HttpActionContext actionContext) { if (!actionContext.ModelState.IsValid) { var errors = actionContext.ModelState .Where(e => e.Value.Errors.Count > 0) .Select(e => new ValidationErrorDetails() { PropertyName = e.Key, ErrorMessage = (e.Value.Errors.First().Exception != null) && String.IsNullOrEmpty(e.Value.Errors.First().ErrorMessage) ? e.Value.Errors.First().Exception.Message : e.Value.Errors.First().ErrorMessage }).ToArray(); var response = new HttpResponseMessage(HttpStatusCode.BadRequest); var responseData = new DtoModelOutgoing( new DtoModelIncomingValidationException("Validation failed", "Validation failed"), _enableVerboseMode ? errors : null); response.Content = new ObjectContent<DtoModelOutgoing>(responseData, new JsonMediaTypeFormatter()); // TODO: Add logger! actionContext.Response = response; } }
public override void OnException(HttpActionExecutedContext actionExecutedContext) { Exception exception = actionExecutedContext.Exception; var response = new HttpResponseMessage(HttpStatusCode.BadRequest); DtoModelOutgoing responseData = null; responseData = new DtoModelOutgoing(new ManagedException(ErrorCodes.InternalServerError, "Internal Server error"), _enableVerboseMode ? new ValidationErrorDetails() { ErrorMessage = exception.Message } : null); response.Content = new ObjectContent<DtoModelOutgoing>(responseData, new JsonMediaTypeFormatter()); //general HTTP 500 response _logger.Error("Unhandled exception occurs.", exception); actionExecutedContext.Response = response; }