Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net HttpClient.PostAsync()请求未到达目标_.net_Asynchronous_Post_C# 4.0_Concurrency - Fatal编程技术网

.net HttpClient.PostAsync()请求未到达目标

.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命令,这似乎解决了本地机器上的问题,但我担心该解决方案的可靠

我正在修改一个电子商务网站的购买流程,该网站能够通过一次购买为多个用户和多个产品进行购买。大型采购有时需要几分钟才能完成,而电子商务网站后端会让用户等待;不是很好的用户体验

我试图让站点生成一个JSON字符串,并将其转换为一个API,该API将在不同的服务器上进行购买处理,并让站点继续在ThankYou页面上运行,而无需等待API的响应。 我的挑战是,有时Post无法进入API。我在postasync之后放了一个thread.sleep命令,这似乎解决了本地机器上的问题,但我担心该解决方案的可靠性

TLDR;我的目标是使代码能够可靠地向API发送帖子,而无需等待结果。这是我以前一直在努力解决的问题,如果有一个最佳实践来实现这个结果,我还没有找到它。如有任何建议,将不胜感激

见下面的邮政编码;没什么好玩的。代码存在于电子商务后端的eventHandler函数中

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。

这是一个比预期更简单的解决方案!谢谢你的洞察力!