gpt4 book ai didi

c# - 我需要在 ASP .Net Core 3.1 Web API 中启动时执行异步方法

转载 作者:行者123 更新时间:2023-12-04 08:26:58 24 4
gpt4 key购买 nike

我有一个 ASP .Net Core 3.1 Web API。当 API 启动时,我希望它从数据库中读取几个查找表并将它们存储在某个地方。这些表包含很少更改的数据(标题、国家/地区、语言等)。这些数据可能每隔几年更改一次。因此,我希望在启动时读取和存储它们以提高性能,而不是每次需要这些数据时都读取数据库。
我所做的是创建一个读取所有这些查找表的服务。然后,在服务的构造函数中,我调用服务中的一个方法,该方法从数据库中进行实际读取。然后我在 Startup.ConfigureServices() 中将此服务注册为单例。
问题是读取数据库表的方法是异步的,构造函数不能是异步的(据我所知)。
目前,它正在工作 - 该方法在服务的构造函数中被调用,然后立即返回,而数据库表的读取发生在一个单独的过程中。无论如何,实际阅读只需要一两秒钟。不过,我不喜欢这样。可以运行另一个需要访问此查找数据的代码,但数据可能尚未准备好。理想情况下,我希望在执行任何其他代码之前完成对这些查找表的读取。另外,我在 VS 中看到一条绿色的摆动线,并对此发出警告:)
所以我不确定如何解决它。是否有在 .Net Core API 中启动时执行代码的最佳实践?

最佳答案

您可以在 main 方法中执行此操作。由于 C# 7.1 可以应用程序入口点返回任务。
看看这个例子。他在 main 方法中运行他的迁移(但他提到它有点困惑,因此您可以使用文章中描述的另一种方法)。我认为您可以以相同的方式加载数据。
https://andrewlock.net/running-async-tasks-on-app-startup-in-asp-net-core-part-2/

关于c# - 我需要在 ASP .Net Core 3.1 Web API 中启动时执行异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65213047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com