提问人:PJS 提问时间:9/20/2023 最后编辑:Peter CsalaPJS 更新时间:9/21/2023 访问量:43
当您以异步方式使用 HttpClient 时,您是否曾经在帖子中看到请求的正文在 2 个请求之间交换?
Have you ever seen the request's body in the post to be exchanged between 2 requests, when you use HttpClient in an Async way?
问:
客户报告说,2个寄存器相互交换了信息,在一千个请求中只有2个。 寄存器 A 具有有关寄存器 B 的正文信息,反之亦然。 这是在我的环境中第一次发生的,当时网络出现跳动。 在这里,您可以看到我如何创建我的 HTTP 客户端并使用它。 如果您有任何其他帮助,请告诉我,非常感谢大家!
如何从控制器和服务调用 Exec?
控制器
[HttpPost()]
public async Task<ActionResult<ResponseModel>> Exec(RequestModel model)
{
return await _service.Exec(model);
}
服务层
public async Task<ResponseModel> Exec (Request model)
{
return await _service.Exec(model);
}
Dal 层
public async Task<ResponseModel> Exec(RequestModel model)
{
var httpClientHandler = HttpClientHandler();
httpClientHandler.UseProxy = true;
var proxy = new WebProxy
{
Address = new Uti("proxy_uri",
BypassProxyOnLocal = false,
UseDefaultCredentials = true
};
httpClientHandler .Proxy = proxy;
var httpClient = new HttpClient(httpClientHandler);
var request = new HttpRequestMessage(HttpMethod.Post, "endpoint_uri");
request.Headers.Add("Authorization","your token auth");
string jsonStr = Json.Serializer.Serialize(model);
var content = new StringContent(jsonStr, null, "application/json");
request.Content = content;
var response = await httpClient.SendAsync(request);
return await response.Content.ReadFromJsonAsync<ResponseModel>();
}
我无法模拟这种情况,但我相信我犯了一个错误或误用了 HTTP 客户端实现。 我使用 webapi 项目目标框架 netcoreapp3.1。 System.Net.Http 版本 = 4.2.2.0
答: 暂无答案
评论
HttpClient
Have you ever
从不。我怀疑调用相同方法的代码将它们混淆了。我不知道你说的throttle是什么意思,但如果你的意思是节流问题,很可能是代码(缺少)无法处理这个问题并返回了之前的结果。类名也表明了不合适的体系结构。Exchange 是一种远程服务,而不是数据存储。Exec
AddHttpClient
Dal.Exec