我在TypeScript和ASP.NET Core Web API一起工作。
场景:
我正在后台使用一个大型数据响应服务。加载数据花了两分钟多时间。据我所知,HttpClient的默认超时时间是localhost (Chrome hold for request time out)的两分钟,但是当我将代码发布到IIS站点时,两分钟后它会给出一个500 Internal Server Error。
API端的:
我把时间设为1000秒。
services.AddDbContext<BusinessContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], opts => opts.CommandTimeout(1000).EnableRetryOnFailure()));web端的:
Try 1:
这是一个简单的服务调用。
async getData(lookUp: Lookup): Promise<PacketSearchItem[]> {
return await this.http.post(environment.apiBaseUrl + "Packet/ManualSearch", lookUp)
.toPromise() as PacketSearchItem[];
}尝试: 2
async getData(lookUp: Lookup): Promise<PacketSearchItem[]> {
return await this.http.post(environment.apiBaseUrl + "Packet/ManualSearch", lookUp).pipe(timeout(10000000))
.toPromise() as PacketSearchItem[];
}尝试: 3
async getData(lookUp: Lookup): Promise<PacketSearchItem[]> {
return await this.http.post(environment.apiBaseUrl + "Packet/ManualSearch", lookUp, { headers: new HttpHeaders({ timeout: `${10000000}` })}).pipe(timeout(10000000))
.toPromise() as PacketSearchItem[];
}谷歌的研究:
我使用了上面的链接代码,但它给了我同样的错误,因为2分钟后,在Google中会出现请求超时。
错误截图:
1)控制台错误:

( 2.)网络错误:

我想等待Chrome从API获得响应。
我已经添加了CORS策略
services.AddCors(options => {
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
app.UseExceptionHandler(
builder => {
builder.Run(
async context => {
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null) {
context.Response.Headers.Add("Application-Error", error.Error.Message);
// CORS
context.Response.Headers.Add("access-control-expose-headers", "Application-Error");
await context.Response.WriteAsync(error.Error.Message).ConfigureAwait(false);
}
});
});发布于 2021-03-04 06:47:05
经过大量的研究,我找到了答案。这是ASP.NET核心配置文件中的问题:
web.config
<aspNetCore requestTimeout="00:20:00">我们必须增加这里的时间。
帮助链接:
发布于 2021-03-03 10:47:25
根据屏幕截图,这不是一个超时问题,而是一个跨源资源共享 (CORS)问题。
您可能应该花一些时间来了解CORS和如何使用在ASP.NET内核中启用CORS。
https://stackoverflow.com/questions/66455089
复制相似问题