/// <summary> CREATE and EXECUTE ASYNC Request with contentType, json by default </summary> public async Task <TResult> ExecuteAsync <TResult>(HttpMethod httpMethod, string path, object data, string contentType = null) { TResult result = default; HttpResponseMessage httpResponse; try { using (var httpRequest = CreateHttpRequest(httpMethod, path, data, contentType)) { httpResponse = await _httpClient.SendAsync(httpRequest); } } catch (Exception ex) { _logger.Error(ex.GetApiMessageInfo()); //response.EnsureSuccessStatusCode(); httpResponse = new HttpResponseMessage(HttpStatusCode.Conflict) { ReasonPhrase = ex.GetApiMessageInfo() }; HttpContext.Response.StatusCode = (int)HttpStatusCode.Conflict; ResponseDetails = CreateResponseDetails <TResult>(httpResponse, ex); } // SuccessStatusCode if (httpResponse != null) { if (httpResponse.IsSuccessStatusCode) { result = await GetResponseResult <TResult>(httpResponse); #if DEBUG ResponseDetails = CreateResponseDetails <TResult>(httpResponse); #endif } else { if (ResponseDetails == null) { ResponseDetails = CreateResponseDetails <TResult>(httpResponse); } _logger.Error(ResponseDetails.ToString()); } } _httpContext = null; return(result); }