为了更好地记录和跟踪,我们创建了一个扩展方法,在里面我们正在做一些事情:
if (!httpResponseMessage.IsSuccessStatusCode)
{
ResponseError error = new ResponseError();
error.Message = $"Error response status code reported: {(int)httpResponseMessage.StatusCode} - {httpResponseMessage.ReasonPhrase}";
error.AbsoluteUri = httpResponseMessage.RequestMessage?.RequestUri?.AbsoluteUri;
if (httpResponseMessage.RequestMessage?.Content != null)
{
// here we are getting an ObjectDisposedException, Object name: System.Net.Http.StringContent
error.RequestContent = await httpResponseMessage.RequestMessage.Content.ReadAsStringAsync();
}
if (httpResponseMessage.Content != null)
{
error.ResponseContent = await httpResponseMessage.Content.ReadAsStringAsync();
}
throw new HttpRequestException(JsonConvert.SerializeObject(error));
}
因此,在失败的情况下,请求消息内容被处理掉,我不知道为什么。
使用:
- . NET框架4.7.2
- http运行时4.5
- System.Net.Http.httpClient
- 例外:**
ObjectDisposedException, Object name: System.Net.Http.StringContent
- 例外:**
- 更新日期:**
未释放响应内容。仅释放请求消息内容。
- 更新2:**
我们不会因为. NET核心API的问题而面临这个问题,只是因为. NET框架服务的问题
1条答案
按热度按时间xuo3flqw1#
您应该将
HttpContent
视为流。因此,一旦读取了它,您需要将它搜索回第0个位置,以便能够重新读取它。