private async Task WriteExceptionToResponse(Exception ex, HttpContext httpContext) { var responseVM = new BaseResponseVm(ex); if (ex is WebImpactExternalResourceException externalException) { if (externalException.WebImpactDebugInfo is BaseResponseVm webImpactResponse) { responseVM.SystemErrorMessage += "/////" + webImpactResponse.SystemErrorMessage; responseVM.SystemErrorStack += "/////" + webImpactResponse.SystemErrorStack; responseVM.SystemMessage += "/////" + webImpactResponse.SystemMessage; responseVM.Result = webImpactResponse.Result; } else { responseVM.SystemMessage = JsonConvert.SerializeObject(externalException.WebImpactDebugInfo, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); } responseVM.DebugInfo = new { Request = externalException.RequestData, Response = externalException.WebImpactDebugInfo }; } // httpContext.Response.Clear(); // Do not clear headers to support CORS var calculatedStatusCode = StatusCodeHelper.GetIntStatusCodeForResponse(responseVM); if (httpContext.Response.StatusCode != calculatedStatusCode) { httpContext.Response.StatusCode = calculatedStatusCode; } httpContext.Response.ContentType = "application/json"; var response = JsonConvert.SerializeObject(responseVM, _jsonSettings); await httpContext.Response.WriteAsync(response); }
public static int GetIntStatusCodeForResponse(BaseResponseVm response) { return((int)_statusMap[response.Result]); }
protected ActionResult <BaseResponseVm> ResponseTyped(BaseResponseVm response) { return(this.RespInnerTyped(response)); }
public static HttpStatusCode GetStatusCodeForResponse(BaseResponseVm response) { return(_statusMap[response.Result]); }