Пример #1
0
        /// <summary>
        /// Método que captura las excepciones no controlada
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            Exception ex = context.Exception;

            HttpResponse response = context.HttpContext.Response;

            if (ex is MessageOfflineValidationException)
            {
                response.StatusCode = (int)HttpStatusCode.OK;

                MessageOfflineValidationException multi = ex as MessageOfflineValidationException;
                var exceptionResponse = new GenericResponse <object>(multi);

                context.Result = new JsonResult(exceptionResponse);
            }
            else if (ex is MultiMessageValidationException)
            {
                response.StatusCode = (int)HttpStatusCode.BadRequest;

                MultiMessageValidationException multi = ex as MultiMessageValidationException;
                var exceptionResponse = new GenericResponse <object>(multi);

                context.Result = new JsonResult(exceptionResponse);
            }
            else if (ex is MultiMessageLogValidationException)
            {
                response.StatusCode = (int)HttpStatusCode.BadRequest;

                MultiMessageLogValidationException multi = ex as MultiMessageLogValidationException;
                var exceptionResponse = new GenericResponse <object>(multi);

                context.Result = new JsonResult(exceptionResponse);

                logger.LogWarning(ex, $"[ERR_VAL] Error de Validación: {string.Join(", ", multi.Messages.Select(c => c.Message).ToList())}");
            }
            else
            {
                response.StatusCode = (int)HttpStatusCode.InternalServerError;

                MultiMessageException multi = ex as MultiMessageException ?? new MultiMessageException(ex);

                var exceptionResponse = new GenericResponse <object>(multi);

                context.Result = new JsonResult(exceptionResponse);

                logger.LogError(ex, $"Error de aplicación: {string.Join(", ", multi.Messages.Select(c => c.Message).ToList())}");
            }

            context.ExceptionHandled = true;
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="ex">La excepción.</param>
 public GenericResponse(MultiMessageLogValidationException ex) : this(false)
 {
     Info = ex.Messages.ToList();
 }