HttpClient.PostAsync()请求未到达目的地

问题描述 投票:0回答:1

我正在修改一个电子商务网站的购买过程,该网站具有一次购买多个用户和多个产品的能力。大型购买有时可能需要几分钟才能完成,而电子商务网站后端会使用户等待;不是很棒的用户体验。

我正在尝试使网站生成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);
                }
.net asynchronous post c#-4.0 concurrency
1个回答
0
投票

可靠地将帖子发送到API,而无需等待结果

这是不可能的。可靠的代码requires await。在没有await的情况下调用异步方法是一种“一劳永逸”的形式,并且根据定义即发即弃代码不在乎操作是否(或是否)完成。

一种可能对您有用的替代方法是拥有一个可靠的队列,并写入that而不是写入API。然后有一个后台处理器从该队列读取并发布到API。

© www.soinside.com 2019 - 2024. All rights reserved.