Asp.Net Core 托管服务
## Asp.Net Core 托管服务
(1)托管服务简介
- 托管服务实现IHostedService接口,一般编写从BackgroundService继承的类。
- 注入托管服务services.AddHostedService
();
(2)托管服务的异常问题
- HostOptions.BackgroundServiceExceptionBehavior设置为Ignore,程序会忽略异常,而不是停止程序
- ExecuteAsync方法中把代码用try……catch包裹起来,当发生异常的时候,记录日志中或发警报等。
(3)托管服务中的DI
- 托管服务是以单例的生命周期注册到依赖注入容器中的。因此不能注入生命周期为范围或者瞬态的服务。
- 可以通过构造方法注入一个IServiceScopeFactory服务,它可以用来创建一个IServiceScope对象,这样我们就可以通过IServiceScope来创建短生命周期的服务了。记得在Dispose中释放IServiceScope。