我可以跳过HttpWebRequest的GetResponseAsync()上的“等待”吗?

时间:2019-04-19 17:18:39

标签: async-await asp.net-web-api2

在我的Web Api 2方法中,我正在做一些工作,然后需要访问另一个站点的REST端点,因此我正在使用HttpWebRequest发送消息。但是,该外部URL将在返回之前处理30分钟(我不拥有外部站点)。我不希望我的方法的调用者必须等待该返回完成。

除了明显的“如果其他站点失败,您不知道”之外,是否还有不对await方法执行request.GetResponseAsync()并让我的代码返回的缺点?

1 个答案:

答案 0 :(得分:2)

  

没有等待的任何缺点

可能。处置本地HttpWebRequest时,它可能会通知远程API,Web服务器通常将其解释为“取消”。您的本地HttpWebRequest可以在应用程序被卸载/回收时完成,这在ASP.NET/IIS上定期发生。

出于这个原因,我为此建议一个标准的带有独立后端的队列解决方案:让您的API将请求放入队列中,并让一个单独的后端进程来执行长时间运行的API调用。