Exemple #1
0
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            if (!context.ModelState.IsValid)
            {
                var ErrorsInModelState = context.ModelState.Where(x => x.Value.Errors.Count > 0)
                                         .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(x => x.ErrorMessage)).ToArray();

                var ErrorMessages = new List <IErrorMessage>();

                foreach (var error in ErrorsInModelState)
                {
                    foreach (var subError in error.Value)
                    {
                        var AErrorMessage = new ErrorMessageDto
                        {
                            FieldName  = error.Key,
                            Message    = subError,
                            StatusCode = "400"
                        };

                        ErrorMessages.Add(AErrorMessage);
                    }
                }
                context.Result = new BadRequestObjectResult(ErrorMessages);

                return;
            }
            await next();
        }
        /// <summary>
        /// Добавить обработку исключений
        /// </summary>
        public static IApplicationBuilder AddExceptionHandling(this IApplicationBuilder app)
        {
            app.UseExceptionHandler(applicationBuilder => {
                applicationBuilder.Run(async httpContext =>
                {
                    var exception = httpContext.Features.Get <IExceptionHandlerPathFeature>()?.Error
                                    ?? new UnknownException();

                    var exceptionDto = new ErrorMessageDto
                    {
                        ErrorMessage = exception.Message
                    };
                    var exceptionJson = exceptionDto.ToJson();

                    var logger = applicationBuilder.ApplicationServices.GetService <IStarsLogger>();
                    logger.Write(exception);

                    httpContext.Response.ContentType = MediaTypeNames.Application.Json;
                    httpContext.Response.StatusCode  = exception is BusinessException
                                                ? StatusCodes.Status400BadRequest
                                                : StatusCodes.Status500InternalServerError;

                    await httpContext.Response.WriteAsync(exceptionJson);
                });
            });

            return(app);
        }
Exemple #3
0
 /// <summary>
 /// Load a http response into dto
 /// </summary>
 /// <param name="resp">Response with brute data and code error</param>
 public void Load(ApiResponse resp)
 {
     if (resp.ReturnCode != ApiRequestCode.OK)
     {
         this.ErrorMessage = JsonConvert.DeserializeObject <ErrorMessageDto>(resp.Response);
     }
     else
     {
         this.parseJson(resp.Response);
     }
 }
Exemple #4
0
        public override Task OnExceptionAsync(ExceptionContext context)
        {
            if (context.Exception is IHttpStatusCodeException)
            {
                var message = new ErrorMessageDto(context.Exception.Message);

                context.Result = new ObjectResult(message)
                {
                    StatusCode = (context.Exception as IHttpStatusCodeException).HttpStatusCode
                };

                context.ExceptionHandled = true;
            }

            return(Task.CompletedTask);
        }