我可以跳过 HttpWebRequest 的 GetResponseAsync() 上的 'await'
Can I skip the 'await' on HttpWebRequest's GetResponseAsync()
在我的 Web Api 2 方法中,我正在做一些工作,然后我需要访问另一个站点的 REST 端点,所以我使用 HttpWebRequest
发送消息。但是,外部 URL 将在 return 之前处理 30 分钟(我不拥有外部站点)。我不希望我的方法的调用者必须等待 return 完成。
除了显而易见的 "if the other site fails you don't know" 之外,不对 request.GetResponseAsync()
方法执行 await
并只让我的代码 return 有什么缺点吗?
is there any downside to not doing an await
可能吧。当您的本地 HttpWebRequest
被处理时,它可能会通知远程 API,这通常被 Web 服务器解释为 "cancel"。当您的应用 unloaded/recycled 时,您的本地 HttpWebRequest
可能会完成,这会在 ASP.NET/IIS.
定期发生
出于这个原因,我会为此推荐一个标准的带有独立后端队列的解决方案:让您的 API 将请求放入队列中,并让一个单独的后端进程执行 long-运行 API 调用。
在我的 Web Api 2 方法中,我正在做一些工作,然后我需要访问另一个站点的 REST 端点,所以我使用 HttpWebRequest
发送消息。但是,外部 URL 将在 return 之前处理 30 分钟(我不拥有外部站点)。我不希望我的方法的调用者必须等待 return 完成。
除了显而易见的 "if the other site fails you don't know" 之外,不对 request.GetResponseAsync()
方法执行 await
并只让我的代码 return 有什么缺点吗?
is there any downside to not doing an await
可能吧。当您的本地 HttpWebRequest
被处理时,它可能会通知远程 API,这通常被 Web 服务器解释为 "cancel"。当您的应用 unloaded/recycled 时,您的本地 HttpWebRequest
可能会完成,这会在 ASP.NET/IIS.
出于这个原因,我会为此推荐一个标准的带有独立后端队列的解决方案:让您的 API 将请求放入队列中,并让一个单独的后端进程执行 long-运行 API 调用。