对于长时间运行的任务,从 .net core WEB API 获取 500 错误

我正在使用 .net core API 从其他服务检索数据并将数据传递给 Angular 应用程序。在等待一段时间后,我在长时间运行的任务中遇到来自 API 的 500 异常。我想等待我的 .net core API 很长时间才能从其他服务获取数据。我在 Program 类中添加了保持活动超时,如下所示。

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConsole();
        })
        .UseStartup<Startup>()
        .UseKestrel(o => { o.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30);});

但仍然没有任何变化。我还按照此处的文章尝试通过实现 IHostedService 来使用后台服务。但仍然面临这个问题。我将不胜感激有人帮助我如何处理这个问题。


慕后森
浏览 95回答 1
1回答

慕妹3146593

您KeepAliveTimeout从服务器上的代码设置的是处理传入请求的超时。该设置对超时的 传出请求没有帮助。如果您使用 调用外部服务HttpClient,请查看设置其HttpClient.Timeout属性获取或设置请求超时之前等待的时间跨度。和默认值为 100,000 毫秒(100 秒)。有点偏离主题感觉这可能不是从外部服务获取信息的最佳结构。就我而言,API 应该是快速且轻便的。如果外部服务的数据不太不稳定,您可以考虑其他从外部服务获取信息的方法,例如运行 cron job/webjob/azure 函数并将结果存储在某种形式的缓存或存储中。
打开App,查看更多内容
随时随地看视频慕课网APP