Exemplo n.º 1
0
        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);
            });
        }
Exemplo n.º 2
0
        /// <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);
            });
        }