internal void Handle( ExceptionHandlerContext context ) {
     context.Result = new TextPlainErrorResult {
         Request = context.ExceptionContext.Request,
         Content = "Oops! Sorry! Something went wrong." +
                   "Please contact [email protected] so we can try to fix it."
     };
 }
        /// <summary>
        /// Handles the exception
        /// </summary>
        /// <param name="context"></param>
        public override void Handle(ExceptionHandlerContext context)
        {
            var exception = context.Exception;

            if (context.Handle(exception))
            {
                return;
            }
            var correlationId = TraceCorrelation.RetrieveCorrelationInfo();

            if (exception.InnerException != null)
            {
                var errorMessage = exception.InnerException.Message;
                var stackTrace   = exception.InnerException.StackTrace ?? "No stack trace available";
            }
        }
        public override void Handle(ExceptionHandlerContext context)
        {
            var exception = context.Exception;
            var code      = GetStatusCode(exception);

            if (code == HttpStatusCode.InternalServerError)
            {
                _loggerService.Error(exception.Message);
            }
            else
            {
                _loggerService.Warning(exception.Message);
            }

            context.Result = new ResponseMessageResult(context.Request.CreateResponse(code, context.Exception.Message));
        }
        public override void Handle(ExceptionHandlerContext context)
        {
            //Return a DTO representing what happened
            context.Result = new ResponseMessageResult(context.Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                                                      new ErrorInformation
            {
                Message          = "We apologize but an unexpected error occured. Please try again later.",
                ExceptionUrl     = context.Request.RequestUri.ToString(),
                ExceptionMessage = context.ExceptionContext.Exception.Message.ToString(),
                Method           = context.Request.Method.ToString(),
                ErrorDate        = DateTime.UtcNow
            }));

            //This is commented out, but could also serve the purpose if you wanted to only return some text directly, rather than JSON that the front end will bind to.
            //context.Result = new ResponseMessageResult(context.Request.CreateResponse(HttpStatusCode.InternalServerError, "We apologize but an unexpected error occured. Please try again later."));
        }
        async Task IQueryExceptionHandler <TCommand, VoidUnit> .HandleAsync(
            TCommand command,
            Exception exception,
            IExceptionHandlerContext <VoidUnit> context,
            CancellationToken cancellationToken)
        {
            using var localContext = new ExceptionHandlerContext(context);

            await HandleAsync(
                command,
                (TException)exception,
                localContext,
                cancellationToken
                )
            .ConfigureAwait(false);
        }
        /// <inheritdoc/>
        public override void Handle(ExceptionHandlerContext context)
        {
            _telemetryClient.TrackException(new ExceptionTelemetry(context.Exception));

            var errorResponse = new ErrorResponseModel(context.Exception);

            if (_includeStackTrace)
            {
                errorResponse.Error.Data = context.Exception.StackTrace;
            }

            var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            var response  = context.Request.CreateResponse(GetStatusCode(errorResponse), errorResponse, formatter);

            context.Result = new ResponseMessageResult(response);
        }
Exemplo n.º 7
0
        public async Task AndExceptionOccurrsInExceptionHandler()
        {
            _logger.Setup(l => l.Error(It.IsAny <Exception>(), It.IsAny <string>())).Throws <Exception>();

            var context = new ExceptionHandlerContext(new ExceptionContext(
                                                          new Exception("any exception"),
                                                          new ExceptionContextCatchBlock("name", true, true),
                                                          new HttpRequestMessage()));

            _handler.Handle(context);

            var message = await context.Result.ExecuteAsync(CancellationToken.None);

            message.StatusCode.Should().Be(HttpStatusCode.InternalServerError);
            message.Content.ReadAsStringAsync().Result.Should().Be($"{{\"Message\":\"{ExceptionInExceptionHandlerErrorMessage}\"}}");
        }
Exemplo n.º 8
0
 /// <summary>Use to intercept and handle exceptions that were unexpected.  Odata renders a Status code 500,  this will format the message and make it a 400</summary>
 /// <param name="context"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public async override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
 {
     if ((context != null) && (context.Exception != null))
     {
         if (context.Exception.GetType().Name.Equals("DbUpdateException"))
         {
             string genericErrorMessage = context.Exception.GetExceptionMessages().Replace("\n", " ").Replace("\r", " ");
             HttpResponseMessage resp;
             resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
             {
                 Content = new StringContent(genericErrorMessage)
             };
             context.Result = new ErrorMessageResult(context.Request, resp);
         }
     }
 }
Exemplo n.º 9
0
        public override void Handle(ExceptionHandlerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            Trace.TraceError(context.Exception.Message);

            //TODO: Log error, app insight or local file storage

            context.Result = new UnexpectedErrorResult
            {
                Request = context.Request
            };
        }
Exemplo n.º 10
0
        public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
        {
            var ex = context.Exception as BusinessException;

            var jsonObj = new
            {
                Error = ex == null ? HttpStatusCode.InternalServerError : ex.StatusCode,
                context.Exception.Message
            };

            var httpResponse = context.Request.CreateResponse(jsonObj.Error, jsonObj);

            context.Result = new ResponseMessageResult(httpResponse);

            return(Task.FromResult(0));
        }
Exemplo n.º 11
0
        public void HandleAsync_IfRequestIsNull_Throws()
        {
            // Arrange
            IExceptionHandler       product = CreateProductUnderTest();
            ExceptionHandlerContext context = new ExceptionHandlerContext(new ExceptionContext
            {
                Exception = CreateException()
            });

            Assert.Null(context.ExceptionContext.Request); // Guard
            CancellationToken cancellationToken = CancellationToken.None;

            // Act & Assert
            Assert.ThrowsArgument(() => product.HandleAsync(context, cancellationToken), "context",
                                  "ExceptionContext.Request must not be null.");
        }
Exemplo n.º 12
0
        private static ResponseMessageResult HandleUnhandledException(ExceptionHandlerContext context)
        {
            // log it
            Elmah.ErrorSignal.FromCurrentContext().Raise(context.Exception);

            var generalException = context.Exception as GeneralException;

            if (generalException != null)
            {
                return(GetResponseMessageResult(context, generalException.TicketNumber));
            }
            else
            {
                return(GetResponseMessageResult(context, Guid.NewGuid().ToString()));
            }
        }
Exemplo n.º 13
0
        public Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
        {
            var errorInfo = new ErrorInformation
            {
                Message   = "Произошла ошибка, смотрите log.txt",
                ErrorDate = DateTime.UtcNow
            };

            Logger.ErrorException("Ошибка: ", context.Exception);

            var httpResponse = context.Request.CreateResponse(HttpStatusCode.InternalServerError, errorInfo);

            context.Result = new ResponseMessageResult(httpResponse);

            return(Task.FromResult(0));
        }
Exemplo n.º 14
0
        public static IHttpActionResult CreateValidationResponseFromException(this ExceptionHandlerContext actionExecutedContext,
                                                                              HttpStatusCode code)
        {
            var typedException = actionExecutedContext.Exception as RegoValidationException;

            if (typedException == null)
            {
                throw new RegoException("Unknown validation exception type");
            }

            var errorMessagError = new HttpError(typedException.Message);

            errorMessagError.AddValidationErrors(typedException.ValidationErrors);
            return(new ResponseMessageResult(
                       actionExecutedContext.Request.CreateErrorResponse(code, errorMessagError)));
        }
Exemplo n.º 15
0
        public override Task HandleAsync(ExceptionHandlerContext context,
                                         CancellationToken cancellationToken)
        {
            // Access Exception using context.Exception;
            const string errorMessage = "An unexpected error occured";
            var          response     = context.Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                                       new
            {
                Message = errorMessage
            });

            response.Headers.Add("X-Error", errorMessage);
            context.Result = new ResponseMessageResult(response);

            return(Task.FromResult(0));
        }
Exemplo n.º 16
0
        public override void Handle(ExceptionHandlerContext context)
        {
            string errorMessage = "Oops! Sorry! Something went wrong." +
                                  "Please contact [email protected] so we can try to fix it.";

            if (context.Exception is CustomException)
            {
                errorMessage = context.Exception.Message;
            }

            context.Result = new TextPlainErrorResult
            {
                Request = context.ExceptionContext.Request,
                Content = errorMessage
            };
        }
Exemplo n.º 17
0
        /// <summary>
        /// Sobreescreve <see cref="ExceptionHandler.Handle"/>
        /// </summary>
        /// <param name="context">Instancia de <see cref="ExceptionHandlerContext"/>.</param>
        public override void Handle(ExceptionHandlerContext context)
        {
            var correlationId = Guid.NewGuid();

            var metadata = new ErrorInfoModel
            {
                Message    = "Um erro não esperado aconteceu!",
                TimeStamp  = DateTime.UtcNow,
                RequestUri = context.Request.RequestUri,
                ErrorId    = correlationId
            };

            var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError, metadata);

            context.Result = new ResponseMessageResult(response);
        }
        private static void Handle(ExceptionHandlerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            ExceptionContext exceptionContext = context.ExceptionContext;

            Contract.Assert(exceptionContext != null);

            HttpRequestMessage request = exceptionContext.Request;

            context.Result = new ResponseMessageResult(request.CreateErrorResponse(HttpStatusCode.InternalServerError,
                                                                                   exceptionContext.Exception));
        }
        /// <summary>
        /// Overrides <see cref="ExceptionHandler.Handle"/> method with code that sets friendly error message to be shown in browser.
        /// </summary>
        /// <param name="context">Instance fo <see cref="ExceptionHandlerContext"/>.</param>
        public override void Handle(ExceptionHandlerContext context)
        {
            var correlationId = Guid.NewGuid();

            var metadata = new ErrorInfoModel
            {
                Message    = "An unexpected error occurred! Please use the Error ID to contact support",
                TimeStamp  = DateTime.UtcNow,
                RequestUri = context.Request.RequestUri,
                ErrorId    = correlationId
            };

            var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError, metadata);

            context.Result = new ResponseMessageResult(response);
        }
Exemplo n.º 20
0
        public override void Handle(ExceptionHandlerContext context)
        {
            const string Message = "Your input conflicted with the current state of the system.";

            if (context.Exception is DivideByZeroException)
            {
                context.Result = new ResponseMessageResult(context.Request.CreateErrorResponse(HttpStatusCode.Conflict, Message));
            }
            else
            {
                HttpError error = new HttpError("An interval server error occured.");
                error.Add("CorrelationId", context.Request.GetCorrelationId().ToString());
                var response = context.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, error);
                context.Result = new ResponseMessageResult(response);
            }
        }
Exemplo n.º 21
0
        /// <summary>When overridden in a derived class, handles the exception asynchronously.</summary>
        /// <returns>A task representing the asynchronous exception handling operation.</returns>
        /// <param name="context">The exception handler context.</param>
        /// <param name="cancellationToken">The token to monitor for cancellation requests.</param>
        public override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
        {
            var statusCode = 500;
            var message    = "Oops! Sorry, Something went wrong.";
            var response   = context.Request.CreateResponse(HttpStatusCode.InternalServerError,
                                                            new
            {
                status      = "error",
                status_code = statusCode,
                message
            });

            response.Headers.Add("X-Error", "");
            context.Result = new ResponseMessageResult(response);
            return(Task.FromResult(response));
        }
        /// <summary>
        /// Handles an unhandled exception and
        /// sets http result to a custom error contract
        /// if request context is available
        /// </summary>
        /// <param name="context"></param>
        public override void Handle(ExceptionHandlerContext context)
        {
            var config  = context.RequestContext?.Configuration;
            var request = context.Request;

            if (config != null && request != null)
            {
                context.Result = errorsFactory.CreateInternalServerError(request, config,
                                                                         "Something went wrong"
                                                                         );
            }
            else
            {
                base.Handle(context);
            }
        }
Exemplo n.º 23
0
            /// <inheritdoc />
            public override void Handle(ExceptionHandlerContext context)
            {
                ExceptionContext exceptionContext = context.ExceptionContext;

                HttpRequestMessage request = exceptionContext.Request;

                if (exceptionContext.CatchBlock == ExceptionCatchBlocks.IExceptionFilter)
                {
                    // The exception filter stage propagates unhandled exceptions by default (when no filter handles the
                    // exception).
                    return;
                }

                context.Result = new ResponseMessageResult(request.CreateErrorResponse(HttpStatusCode.InternalServerError,
                                                                                       "An error has occuerd. Please check the logs for more details."));
            }
        public override void Handle(ExceptionHandlerContext context)
        {
            if (context.Exception is ArgumentNullException)
            {
                var result = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content      = new StringContent(context.Exception.Message),
                    ReasonPhrase = "ArgumentNullException"
                };

                context.Result = new ErrorMessageResult(context.Request, result);
            }
            else
            {
                // Handle other exceptions
            }
        }
Exemplo n.º 25
0
        public override void Handle(ExceptionHandlerContext context)
        {
            Exception exception    = context.Exception;
            var       errorMessage = _sendDetailedError
                    ? $"Message: {exception.Message} {Environment.NewLine} StackTrace: {exception.StackTrace}"
                    : exception.Message;

            /*context.Result = new ErrorMessageResult(context.Request, context.Request.CreateUnknownError(errorMessage));*/

            var httpResponseMessage = (exception.TargetSite.DeclaringType.Name == ControllerActivatorClassName)
                                      // often happens because some of controller dependencies (f.e. current user) can not be resolved.
                                      // for now just simulating 401 as it was in original nextgen implementation
                ? context.Request.CreateUnauthrorizedError(errorMessage)
                : context.Request.CreateUnknownError(errorMessage);

            context.Result = new ErrorMessageResult(context.Request, httpResponseMessage);
        }
Exemplo n.º 26
0
        public override void Handle(ExceptionHandlerContext context)
        {
            List <string> errors = new List <string>();

            errors.Add(context.Exception?.Message);

            var d = context.Exception.GetType();

            var responsePackage = new ResponsePackage(null, HttpStatusCode.BadRequest, string.Empty, string.Empty, errors);



            var response = context.Request.CreateResponse(HttpStatusCode.BadRequest, new { Errors = errors, HttpStatusCode = (int)HttpStatusCode.BadRequest, Message = context.Exception.Message });


            context.Result = new ResponseMessageResult(response);
        }
Exemplo n.º 27
0
        public override void Handle(ExceptionHandlerContext context)
        {
            //Type exceptionType = context.Exception.GetType();

            System.Exception exception = context.Exception;

            //string errmsg = exception.Message;
            //while (exception.InnerException != null)
            //{
            //    errmsg += exception.InnerException.Message;
            //    exception = exception.InnerException;
            //}
            var body = ExceptionHelper.FormatExceptionMessage(exception);
            HttpResponseMessage responseMessage = context.Request.CreateResponse(HttpStatusCode.OK, body);

            context.Result = new ExceptionActionResult(responseMessage);
        }
Exemplo n.º 28
0
        public override void Handle(ExceptionHandlerContext context)
        {
            _logger.Error(context.Exception, context.Request.RequestUri.ToString());
            var result = new HttpResponseMessage(HttpStatusCode.InternalServerError)
            {
                Content      = new StringContent("Internal Server Error Occurred"),
                ReasonPhrase = "Exception"
            };
            var request = context.Request;
            var origin  = request.Headers.GetValues("Origin").FirstOrDefault();

            result.WriteCorsHeaders(new System.Web.Cors.CorsResult {
                AllowedOrigin = origin
            });

            context.Result = new ErrorMessageResult(context.Request, result);
        }
        public override void Handle(ExceptionHandlerContext context)
        {
            ResponseError error = new ResponseError()
            {
                Id                  = Toolkit.Error.Id,
                IsSuccess           = false,
                Message             = context.Exception.Message,
                UserFriendlyMessage = "There has been an error. We will track the error with given Id."
            };
            HttpResponseMessage responseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError)
            {
                Content      = new JsonContent(error),
                ReasonPhrase = context.Exception.GetType().Name
            };

            context.Result = new ExceptionResult(context.Request, responseMessage);
        }
Exemplo n.º 30
0
        public override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
        {
            var runtimeError = context.Exception;

            var errorLog = new ErrorLog
            {
                DtHrErro         = DateTime.Now,
                ExceptionMessage = runtimeError.Message,
                ExceptionSource  = runtimeError.StackTrace,
                ExceptionType    = runtimeError.GetType().FullName,
                ExceptionUrl     = context.Request.RequestUri.OriginalString
            };

            SalvarExcecao(errorLog);
            ;
            return(base.HandleAsync(context, cancellationToken));
        }
Exemplo n.º 31
0
        public override void Handle(ExceptionHandlerContext context)
        {
            var runtimeError = context.Exception;

            var errorLog = new ErrorLog
            {
                DtHrErro         = DateTime.Now,
                ExceptionMessage = runtimeError.Message,
                ExceptionSource  = runtimeError.StackTrace,
                ExceptionType    = runtimeError.GetType().FullName,
                ExceptionUrl     = context.Request.RequestUri.OriginalString
            };

            SalvarExcecao(errorLog);

            base.Handle(context);
        }