.NET 6下HttpClientFactory重复返回前请求结果的问题求助
HttpClientFactory 请求重复返回相同结果的排查思路求助
我基于.NET 6构建了ASP.NET Core Web API服务,使用C#的HttpClientFactory向外部服务发起HTTP请求。目前遇到的问题是:传入不同参数的第二次请求会返回与前一次请求相同的结果。我尝试在每次请求开始时清除默认请求头,但没有效果。改用RestSharp或直接实例化new HttpClient()可以解决问题,但我希望使用官方推荐的HttpClientFactory,恳请各位提供排查思路。
相关代码如下:
// 每次请求的access token不同,但请求体相同 public async Task<MyResponse> GetXyz(object requestBody, string accessToken) { var uri = "..."; return await this.httpClientFactory.CreateClient("GetXyz").PostAsync<MyResponse>(uri, requestBody, GetHeaders(accessToken)); } private static IList<(string, string)> GetHeaders(string accessToken) { var headers = new List<(string, string)> { (HeaderNames.Accept, "application/json"), }; if (!string.IsNullOrWhiteSpace(accessToken)) { headers.Add((HeaderNames.Authorization, "Bearer " + accessToken)); } return headers; } public static async Task<T> PostAsync<T>(this HttpClient httpClient, string uri, object data, IList<(string, string)> headers = null) where T : class { // httpClient.DefaultRequestHeaders.Clear(); var body = data.Serialise(); // 转换为JSON字符串 using (var request = new HttpRequestMessage(HttpMethod.Post, uri)) { request.AddRequestHeaders(headers); request.Content = new StringContent(body, Encoding.UTF8, "application/json"); using (var httpResponse = await httpClient.SendAsync(request)) { var jsonResponse = await httpResponse.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<T>(jsonResponse); } } }
编辑2:网络流量差异
使用Fiddler Classic对httpclientfactory.CreateClient()发起的两次请求进行抓包,以下是请求头差异截图:

内容的提问来源于stack exchange,提问作者user1912383
相关产品推荐
相关产品推荐

