Skip to main content
 首页 » 编程设计

c#之增加 Angular 2+ 和 ASP.NET Core WebAPI 应用程序中的超时

2024年02月25日33傻小

在我的 Angular 2+/ASP.NET Core MVC WebAPI 应用程序中,我有一个从客户端 UI 到服务器的长时间运行的 API 调用。请求在 30 秒后超时。我想为客户端或服务器端的此特定 API 调用定义超时。

我只找到了全局配置服务器超时的方法,这不是我想要的,因为 30 秒超时对其他调用来说没问题。我还找到了通过管道传递 RxJS 的 timeout 运算符来减少客户端超时的解决方案。但是,据我了解,这不适合增加超时时间吗?

如何设置这个特定请求的超时? 30 秒默认值从何而来?

(代码实际上并不重要,因为它是一个标准的 API Controller 和一个标准的 Angular HTTP 调用):

this.http.get('api/xyz').subscribe(d => { ... }); 

请您参考如下方法:

要解决超时问题,您可以使用 RxJs 中的 timeout,如下所示

以毫秒为单位将时间传递给 timeout 运算符

这里我将 60 秒作为超时传递,因此如果 60 秒后没有来自服务器的响应,那么它将抛出超时错误。

import ‘rxjs/add/operator/timeout’;  
 
... 
 
this.http.get('api/xyz').timeout(60000).subscribe(d => { ... });