private HttpResponseParameters GetResponseParametersFromBusinessException(BusinessException exception) { var result = new HttpResponseParameters { StatusCode = (int)HttpStatusCode.BadRequest }; if (exception.Errors == null || exception.Errors.Count == 0) { result.ContentType = HttpResponseContentTypes.TextPlain; result.Content = exception.Message.ToString(); } else { result.ContentType = HttpResponseContentTypes.ApplicationJson; result.Content = CreateJsonFromBusinessException(exception).ToString(); } return(result); }
public bool TryGetHttpStatusCodeForException(Exception exception, out HttpResponseParameters parameters) { if (exception is ArgumentOutOfRangeException) { parameters = new HttpResponseParameters { StatusCode = (int)HttpStatusCode.NotFound, ContentType = HttpResponseContentTypes.TextPlain, Content = exception.Message }; return(true); } else if (exception is ArgumentException) { parameters = new HttpResponseParameters { StatusCode = (int)HttpStatusCode.BadRequest, ContentType = HttpResponseContentTypes.TextPlain, Content = exception.Message }; return(true); } else if (exception is BusinessException) { parameters = GetResponseParametersFromBusinessException((BusinessException)exception); return(true); } else { parameters = new HttpResponseParameters { StatusCode = (int)HttpStatusCode.InternalServerError, ContentType = HttpResponseContentTypes.TextPlain, Content = DefaultErrorMessage }; return(true); } }
private async Task MapExceptionToHttpResponse(HttpContext context, HttpResponseParameters parameters) { context.Response.StatusCode = parameters.StatusCode; context.Response.ContentType = parameters.ContentType; await context.Response.WriteAsync(parameters.Content); }