【问题标题】:Getting 500 error from .net core WEB API for long running task从 .net core WEB API 获取 500 错误以执行长时间运行的任务
【发布时间】:2019-08-20 18:37:54
【问题描述】:

我正在使用 .net 核心 API 从其他服务检索数据并将数据传递给 Angular 应用程序。在等待一段时间后,我正面临来自 API 的 500 个长时间运行任务的异常。我想等待我的 .net 核心 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);});

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

【问题讨论】:

    标签: c# asp.net-core .net-core asp.net-core-webapi


    【解决方案1】:

    您通过服务器上的代码设置的KeepAliveTimeout是处理传入请求的超时时间。设置对超时的传出 请求没有帮助。

    如果您使用HttpClient 调用外部服务,请查看设置其HttpClient.Timeout Property 哪个

    获取或设置请求超时前等待的时间跨度。

    和

    默认值为 100,000 毫秒(100 秒)。

    有点跑题
    感觉这可能不是从外部服务获取信息的最佳结构。就我而言,API 应该是快速和轻便的。

    如果外部服务的数据不是太不稳定,您可以查看从外部服务获取信息的其他方法,例如运行 cron 作业/webjob/azure 函数并将结果以某种形式存储缓存或存储。

    【讨论】:

      猜你喜欢
      • 2020-01-22
      • 2021-01-20
      • 1970-01-01
      • 2020-11-20
      • 2018-05-06
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多