【发布时间】:2022-01-02 17:42:18
【问题描述】:
我正在开发一个 Web API,它应该处理一些长时间运行的任务,例如为数千次调用调用另一个外部 API 并存储返回的数据。我正在使用 DI 将服务注入我的控制器以处理逻辑。该服务是托管服务,因为这是我理解的最合适的服务类型。
我的问题是,每当启动 API 时都会调用 StartAsync() 方法——不仅是当我通过 API 控制器调用该方法时。有谁知道如何禁用调用该方法的框架?对于我的情况,是否需要甚至建议使用托管服务?
老实说,我只了解 Singleton、Transient 和 Scoped 服务之间的区别,并不太了解托管服务应该是什么。
【问题讨论】:
-
Singleton、Transient 和 Scoped 服务是对象的生命周期。另一方面, StartAsync 似乎是一个自定义函数。您可以分享代码以便我们了解您的问题吗? “每当启动 API 时都会调用 StartAsync() 方法” - 为什么不停止从启动类调用 StartAsync() 方法?
-
@Rahatur HostedServices 是一种类似于 Singleton、Scoped 和 Transient 的服务。 StartAsync 是来自 IHostedService 接口的方法。我实施的与这个问题无关,除了我注册服务而没有进一步配置的事实。
-
@Rahatur 我没有从 Startup 调用该方法。我自己只通过控制器调用方法,它是由框架调用的,没有我的启动
-
明白你的意思。我已经发布了该问题的解决方案。
标签: .net asp.net-mvc dependency-injection