运行 Job 与后台任务
本页面向需要处理 BackgroundService、Hangfire Job、异步任务和消息消费的人,重点回答 Scope、WorkContext、鉴权边界和真实项目组织方式。
我现在要解决什么
- 后台任务如何创建自己的 WorkContext。
- Hangfire Job 用框架内置激活器还是项目自定义激活器。
- Dashboard 如何做鉴权。
- 定时任务和消息消费里如何保留上下文边界。
先看哪几页
最短落地路径
- 非 HTTP 线程先建立 WorkContext,再解析 Scoped 服务。
- Hangfire Job 优先使用框架
WorkContextJobActivator,自定义激活器也必须创建并释放IWorkContextScope。 Task.Run、线程池和 BackgroundService 内部逻辑优先使用CreateScopeWithWorkContextForNewTask()。
示例与落地对照
niusys-webapi:Hangfire Dashboard 与 Server 组合。gmandarin-backend:自定义 Hangfire JobActivator。woscm:BackgroundService+ 嵌套CreateScopeWithWorkContext()。