在我的Web Api 2方法中,我正在做一些工作,然后需要访问另一个站点的REST端点,因此我正在使用HttpWebRequest
发送消息。但是,该外部URL将在返回之前处理30分钟(我不拥有外部站点)。我不希望我的方法的调用者必须等待该返回完成。
除了明显的“如果其他站点失败,您不知道”之外,是否还有不对await
方法执行request.GetResponseAsync()
并让我的代码返回的缺点?
答案 0 :(得分:2)
没有等待的任何缺点
可能。处置本地HttpWebRequest
时,它可能会通知远程API,Web服务器通常将其解释为“取消”。您的本地HttpWebRequest
可以在应用程序被卸载/回收时完成,这在ASP.NET/IIS上定期发生。
出于这个原因,我为此建议一个标准的带有独立后端的队列解决方案:让您的API将请求放入队列中,并让一个单独的后端进程来执行长时间运行的API调用。