protected HttpResponseMessage HandleException(Exception exception, HttpStatusCode statusCode = HttpStatusCode.InternalServerError,
                                                      string detail = null, IEnumerable <string> messages = null, string source = null, bool logEvent = true)
        {
            if (logEvent)
            {
                LogException(exception);
            }

            source = source ?? exception.Source;
            var exceptionContent = new ExceptionResponseModel(detail, messages, source);

            return(Request.CreateResponse(statusCode, exceptionContent));
        }
Example #2
0
        public override IResponseModel Build()
        {
            var model = new ExceptionResponseModel
            {
                Success         = SuccessValue,
                Messages        = new List <string>(Messages),
                ErrorClass      = GetErrorClass(),
                ErrorLineNumber = GetErrorLineNumber(),
                ExceptionType   = GetExceptionType()
            };

            Messages.Clear();
            SuccessValue = false;
            _exception   = null;

            return(model);
        }
        private static Task HandleExceptionAsync(HttpContext context, Exception exception)
        {
            var            errorCode = "error";
            HttpStatusCode statusCode;
            object         result = "Something went wrong!";

            var exceptionType = exception.GetType();

            switch (exception)
            {
            case UnauthorizedAccessException _ when exceptionType == typeof(UnauthorizedAccessException):
                result     = "Unauthorized access.";
                statusCode = HttpStatusCode.Unauthorized;
                break;

            case PowerChatValidationException e when exceptionType == typeof(PowerChatValidationException):
                result     = e.Failures;
                statusCode = HttpStatusCode.BadRequest;
                errorCode  = e.Code;
                break;

            case PowerChatApplicationException e when exceptionType == typeof(PowerChatApplicationException):
                result     = e.Message;
                statusCode = HttpStatusCode.BadRequest;
                errorCode  = e.Code;
                break;

            default:
                statusCode = HttpStatusCode.InternalServerError;
                break;
            }

            var response = new ExceptionResponseModel
            {
                Code   = errorCode,
                Result = result
            };

            var payload = JsonConvert.SerializeObject(response);

            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)statusCode;

            return(context.Response.WriteAsync(payload));
        }
        /// <summary>
        /// Invokes the method or constructor reflected by this MethodInfo instance.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context)
        {
            string message = "Wrong url bro !";

            try
            {
                await _next.Invoke(context).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }

            if (!context.Response.HasStarted)
            {
                var response = new ExceptionResponseModel(message);
                response.StatusCode = StatusCodes.Status500InternalServerError;
                response.Success    = false;
                var json = JsonConvert.SerializeObject(response);
                await context.Response.WriteAsync(json);
            }
        }