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)); }
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); } }