You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core后台服务报错找不到可重写的ExecuteAsync方法该如何解决?

错误原因
  • 你自定义的Backgroundservice类为空,没有定义任何可供子类重写的ExecuteAsync方法,导致派生类尝试重写时找不到匹配的方法。
  • 若你要使用.NET Core原生的后台托管服务能力,无需自行定义基类,官方Microsoft.Extensions.Hosting命名空间下已提供BackgroundService抽象类(注意类名中S为大写,与你自定义的小写s的类名不同),内置了需要重写的ExecuteAsync方法。
解决方案

方案1:使用官方原生BackgroundService(推荐)

删除你自定义的空Backgroundservice类,修正派生类的基类引用与拼写错误即可,修正后代码如下:

using Microsoft.Extensions.Hosting;

namespace BackGroundTask.Demo
{
    public class DerivedBackGroundPrinted : BackgroundService
    {
        // 修正拼写错误 IWroker => IWorker
        private readonly IWorker worker;

        // 修正拼写错误 IWroker => IWorker
        public DerivedBackGroundPrinted(IWorker worker)
        {
            this.worker = worker;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            // 修正拼写错误 DoWOrk => DoWork
            await worker.DoWork(stoppingToken);
        }
    }
}

方案2:保留自定义基类

如果确实需要自行封装基类逻辑,需要在自定义的Backgroundservice中添加可重写的ExecuteAsync方法:

namespace BackGroundTask.Demo
{
    public class Backgroundservice
    {
        protected virtual Task ExecuteAsync(CancellationToken stoppingToken)
        {
            return Task.CompletedTask;
        }
    }
}

注意:如果要让自定义基类适配.NET Core的托管服务体系,需要额外实现IHostedService和IDisposable接口,否则无法直接注册为后台服务运行。

内容的提问来源于stack exchange,提问作者match

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:15:02