private void BuildHandleErrorPipeLine() { HandleErrorPipeline = new List <Func <ServiceUnitContext, ServiceUnitResponse, ServiceUnitResponse> >(); HandleErrorPipeline.Add((suContext, response) => { Exception exception = response.Data as Exception; HttpStatusCode statusCode = HttpStatusCode.InternalServerError; if ((exception is DbUpdateConcurrencyException) || (exception.InnerException is DbUpdateConcurrencyException)) { statusCode = HttpStatusCode.Conflict; } else if (exception is DbEntityValidationException) { statusCode = HttpStatusCode.BadRequest; } WebApiErrorResponse apiError = WebApiErrorResponse.Create(exception); ServiceUnitResponse newResponse = new ServiceUnitResponse(statusCode) { Data = apiError }; return(newResponse); }); }
/// <summary> /// Throws appropriate exception based on web api response object. /// </summary> /// <param name="errorResponse">Web api response object.</param> protected virtual void ThrowExceptionForResponse(WebApiErrorResponse errorResponse) { if (errorResponse == null) { throw new ArgumentNullException(nameof(errorResponse)); } //throw generic non-error code web api client exception throw new WebApiClientException((HttpStatusCode)errorResponse.HttpStatusCode, errorResponse.Message, errorResponse.ErrorCodeType, errorResponse.ErrorCodeTypeReadable, errorResponse.ErrorCode, errorResponse.ErrorCodeReadable, errorResponse.Errors); }
private void BuildHandleErrorPipeLine() { HandleErrorPipeline = new List <Func <ServiceUnitContext, ServiceUnitResponse, ServiceUnitResponse> >(); HandleErrorPipeline.Add((suContext, response) => { Exception exception = response.Data as Exception; //401 or 403 if (response.StatusCode == HttpStatusCode.Forbidden || response.StatusCode == HttpStatusCode.Unauthorized) { response.Data = new WebApiErrorResponse() { ErrorType = WebApiErrorTypes.AuthorizationError, Message = Resources.RoleAuthorizedErrorMessage, Description = string.Empty }; return(response); } HttpStatusCode statusCode = HttpStatusCode.InternalServerError; if ((exception is DbUpdateConcurrencyException) || (exception.InnerException is DbUpdateConcurrencyException)) { statusCode = HttpStatusCode.Conflict; } else if (exception is DbEntityValidationException) { statusCode = HttpStatusCode.BadRequest; } WebApiErrorResponse apiError = WebApiErrorResponse.Create(exception); ServiceUnitResponse newResponse = new ServiceUnitResponse(statusCode) { Data = apiError }; return(newResponse); }); }