【发布时间】:2022-01-07 21:44:54
【问题描述】:
我想在 asp.net core 中使用后台任务。 我找到了有用的文档https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-6.0&tabs=visual-studio
我想知道为什么它们的生命周期显然是作用域:激活作用域服务的托管服务。作用域服务可以使用依赖注入 (DI)。 在这种情况下,什么是范围?
对于 Web 应用程序,范围生命周期表示每个客户端请求(连接)创建一次服务。使用 AddScoped 注册范围服务。 在处理请求的应用中,作用域服务在请求结束时被释放。
虽然我确实理解这对于例如标准的 http get 请求到 api 意味着什么, 我不明白后台工作人员的含义。 恕我直言,拥有一个单身背景工作者会更有意义。我当然不希望在我的应用程序中同时运行多个实例。
另一件事是后台工作人员中的 DI,这显然不同于标准服务: 要在 BackgroundService 中使用范围服务,请创建一个范围。默认情况下不会为托管服务创建范围。
我无法确认:
services.AddHostedService(x => new DataPersister(x.GetRequiredService<IAsyncDocumentSession>(), x.GetRequiredService<ILogger>()));
似乎工作得很好。
【问题讨论】:
标签: asp.net-core backgroundworker