.net HttpClient.PostAsync()请求未到达目标
我正在修改一个电子商务网站的购买流程,该网站能够通过一次购买为多个用户和多个产品进行购买。大型采购有时需要几分钟才能完成,而电子商务网站后端会让用户等待;不是很好的用户体验 我试图让站点生成一个JSON字符串,并将其转换为一个API,该API将在不同的服务器上进行购买处理,并让站点继续在ThankYou页面上运行,而无需等待API的响应。 我的挑战是,有时Post无法进入API。我在postasync之后放了一个thread.sleep命令,这似乎解决了本地机器上的问题,但我担心该解决方案的可靠性 TLDR;我的目标是使代码能够可靠地向API发送帖子,而无需等待结果。这是我以前一直在努力解决的问题,如果有一个最佳实践来实现这个结果,我还没有找到它。如有任何建议,将不胜感激 见下面的邮政编码;没什么好玩的。代码存在于电子商务后端的eventHandler函数中.net HttpClient.PostAsync()请求未到达目标,.net,asynchronous,post,c#-4.0,concurrency,.net,Asynchronous,Post,C# 4.0,Concurrency,我正在修改一个电子商务网站的购买流程,该网站能够通过一次购买为多个用户和多个产品进行购买。大型采购有时需要几分钟才能完成,而电子商务网站后端会让用户等待;不是很好的用户体验 我试图让站点生成一个JSON字符串,并将其转换为一个API,该API将在不同的服务器上进行购买处理,并让站点继续在ThankYou页面上运行,而无需等待API的响应。 我的挑战是,有时Post无法进入API。我在postasync之后放了一个thread.sleep命令,这似乎解决了本地机器上的问题,但我担心该解决方案的可靠
using (System.Net.Http.HttpClient client = new HttpClient(new HttpClientHandler(),false))
{
var url = ConfigurationManager.AppSettings["APIURL"];
var reqBody = new StringContent(RequestData.ToString(), Encoding.UTF8, "application/json");
var task = client.PostAsync(url, reqBody);
//increases chance of post reaching API before function ends
Thread.Sleep(3000);
}
可靠地向API发送POST,而无需等待结果
这是不可能的。可靠的代码需要等待。在不等待异步方法的情况下调用它们是一种先发后忘的形式,根据定义,先发后忘的代码并不关心操作是否完成
一种可能适用于您的替代方法是拥有一个可靠的队列,并向该队列而不是API写入数据。然后有一个后台处理器从该队列读取数据并发布到API。这是一个比预期更简单的解决方案!谢谢你的洞察力!