asp.net - ERROR DI (AggregateException: 某些服务无法构建)
问题描述
我是 .NET 的初学者,我学习遵循教程,但运行程序时出现此消息错误
System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: pwiapi.Data.ILineRepo Lifetime: Scoped ImplementationType: pwiapi.Data.SqlLineRepo': Unable to resolve service for type 'pwiapi.Data.LineContext' while attempting to activate 'pwiapi.Data.SqlLineRepo'.
---> System.InvalidOperationException: Unable to resolve service for type 'pwiapi.Data.LineContext' while attempting to activate 'pwiapi.Data.SqlLineRepo'.
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor)
--- End of inner exception stack trace ---
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor)
at Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(IEnumerable`1 serviceDescriptors, IServiceProviderEngine engine, ServiceProviderOptions options)
这是我的代码startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ConfigurationContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("ConnectionOne"));
});
services.AddControllers();
services.AddScoped<ILineRepo,SqlLineRepo>();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "pwiapi", Version = "v1" });
});
}
所以这是我的数据(SqlLineRepo.cs):
public class SqlLineRepo : ILineRepo
{
private readonly LineContext _context;
public SqlLineRepo(LineContext context)
{
_context = context;
}
public Line GetLineByNo(string lineNo)
{
return _context.Lines.FirstOrDefault(p => p.LINE_NO == lineNo);
}
public IEnumerable<Line> GetLines()
{
return _context.Lines.ToList();
}
}
这是我的界面(ILineRepo.cs)
using pwiapi.Models;
using System.Collections.Generic;
namespace pwiapi.Data
{
public interface ILineRepo
{
IEnumerable<Line> GetLines();
Line GetLineByNo(string lineNo);
}
}
这是我的控制器:
namespace pwiapi.Controllers
{
[Route("api/commands")]
[ApiController]
public class LineController : ControllerBase
{
private readonly ILineRepo _repository;
public LineController(ILineRepo repository) {
_repository = repository;
}
//private readonly MockLineRepo _repository = new MockLineRepo();
[HttpGet]
public ActionResult<IEnumerable<Line>> GetAllLines() {
var lineItems = _repository.GetLines();
return Ok(lineItems);
}
[HttpGet("{lineno}")]
public ActionResult<Line> GetLineByNo(string lineno) {
var lineItem = _repository.GetLineByNo(lineno);
return Ok(lineItem);
}
}
}
任何机构都可以帮助解决和解释这里发生的事情?我一直在寻找如何解决这个问题,但程序仍然错误,我无法理解
解决方案
您需要注册LineContext
到IServiceCollection
.
services.AddDbContext<LineContext>(options => ...)
推荐阅读
- python - 操作数无法与形状一起广播 (128,) (0,) 错误
- java - EJB 及其依赖项中的 Jndi 查找
- python - 如何将字典列表写入 csv 并从 Python 中的 CSV 缓冲区创建 pandas 数据帧?
- javascript - 不聚 | 从提交的值中排除空表单字段
- javascript - 如何从一组对象中创建一个合并对象,该对象保留原始对象中的属性,而不是从新传入的对象中更改
- python - 当我为 XGBoost 执行均方误差时,为什么会出现 KeyError: 'Target_Variable'?
- php - 如何在 Carbon 中剩余天数
- spring-boot - Springboot Webclient 抛出“现有连接被远程主机强行关闭”。
- c# - How to create an already existing database in Visual Studio?
- rstudio - R:递归索引在级别 2 失败