下载文件 angular 11 时出现错误 502 网关错误?

error 502 bad gateway when download file angular 11?

我正在从 angular 11 下载 zip file

我在下载大文件时遇到问题,但小文件没有任何问题。

我下载的大文件有size 2.397 kb.

完成下载需要 7 分钟,但 2 分钟后出现错误 502 bad gateway。

它从本地电脑下载文件没有任何问题,但是当尝试从远程服务器下载文件时发布给我 error 502 bad gateway .

所以如何解决这个问题以及为什么会出现这个错误?

e {headers: n, status: 502, statusText: 'Bad Gateway', url: 'https://pn.xxx.com:7072/api/Z2Delivery/ExportNxp', ok: false, …}
error: Blob
size: 1477
type: "text/html"
[[Prototype]]: Blob
headers: n
lazyInit: ƒ ()
lazyUpdate: null
normalizedNames: Map(0) {size: 0}
[[Prototype]]: Object
message: "Http failure response for https://pn.xxx.com:7072/api/Z2Delivery/ExportNxp: 502 Bad Gateway"
name: "HttpErrorResponse"
ok: false
status: 502
statusText: "Bad Gateway"
url: "https://pn.xxx.com:7072/api/Z2Delivery/ExportNxp"
[[Prototype]]: Object
constructor: ƒ e(e)
[[Prototype]]: Object

我试过的

web api
[Route("ExportNxp")]
        public IActionResult ExportNxp(bool areIdentical)
        {
         
                if (areIdentical == false)
                {
                    return OK("Not Matched Excel");
                }
                else  
                {
                   
                return PhysicalFile(zipPath, "application/zip", Path.GetFileName(zipPath));
              
                }

        }
service.ts
PostUploadzipNxp(file:any):Observable<any>
{
  formData.append('file', file,file.name);
  return this.http.post('https://pn.xxx.com:7072/api/Z2Delivery/ExportNxp/', formData,{observe: 'response', responseType: 'blob' });
}
component.ts
 this._dataService.PostUploadzipNxp(this.fileToUpload)
     .subscribe(blob => {
       saveAs(blob.body, this.fileToUpload?.name +'.zip');
      });

默认情况下,ASP.NET核心请求超时为2分钟,您可以通过program.cs文件

中的KeepAliveTimeout进行更改

在 .net 核心 6.0 中

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(t =>
{
  t.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(15);
});

在 .net 核心 3.1 中

 public static void Main(string[] args)
 {
  CreateWebHostBuilder(args).Build().Run();
 }

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureKestrel(o => { o.Limits.KeepAliveTimeout =  TimeSpan.FromMinutes(10); });