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

ASP.NET Core Web API依赖注入异常:已注入仍无法解析服务

解决ASP.NET Core Web API中"Unable to resolve service for type"异常

核心问题1:控制器依赖实现类而非接口

你在Program.cs里注册的是接口IXFer与实现类XFerRepository的映射,但XFerController的构造函数直接依赖XFerRepository类型——DI容器无法直接解析该实现类的实例(仅注册接口与实现的关联,未单独注册实现类本身)。

修复方案(推荐):控制器依赖接口

修改XFerController代码,将依赖改为接口IXFer:

[Route("api/[controller]")]
[ApiController]
public class XFerController : ControllerBase
{
     private readonly IXFer _transactionRepository;

     public XFerController(IXFer transactionRepository)
     {
         _transactionRepository = transactionRepository;
     }

     [HttpGet]
     public async Task<IActionResult> GetTransactions()
     {
         var transactions = await _transactionRepository.GetAllAsync();
         var response = new List<XFer>();

         foreach (var transaction in transactions)
         {
             response.Add(new XFer
             {
                 id = transaction.id,
                 transactionType = transaction.transactionType,
                 amount = transaction.amount,
                 transactionDate = transaction.transactionDate
             });
         }

         return Ok(response);
     }
}

核心问题2:检查DbContext是否注册

XFerRepository的构造函数依赖dbContext,若Program.cs中未注册该DbContext,DI容器同样会抛出无法解析服务的异常。需确保Program.cs中有类似以下的注册代码:

builder.Services.AddDbContext<dbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("YourConnectionString")));

(根据你使用的数据库类型替换UseSqlServer,比如UseSqlite、UseNpgsql等)

额外验证点

  • 确认IXFer、XFerRepository、dbContext所在命名空间已正确引用,无拼写错误
  • 确认Program.cs中的注册代码在builder.Build()之前执行

内容的提问来源于stack exchange,提问作者Lazy Llama Games

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:57:46