C# 无法解析类型为';测试服务&x27;试图激活';测试控制器';
我的错误C# 无法解析类型为';测试服务&x27;试图激活';测试控制器';,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我的错误 InvalidOperationException:尝试激活“KTS.WEBAPI.Controllers.TestsController”时,无法解析类型“KTS.BLL.Interfaces.ITestService”的服务。 我有三层架构的应用程序。TestController位于API层中,ITestService和TestService位于BLL中 测试控制器 [ApiController] public class TestsController : Con
InvalidOperationException:尝试激活“KTS.WEBAPI.Controllers.TestsController”时,无法解析类型“KTS.BLL.Interfaces.ITestService”的服务。
我有三层架构的应用程序。TestController位于API层中,ITestService和TestService位于BLL中
测试控制器
[ApiController]
public class TestsController : ControllerBase
{
private readonly ITestService _testService;
IMapper mapper = new MapperConfiguration(cfg => cfg.CreateMap<TestDTO, TestModel>()).CreateMapper();
public TestsController(ITestService testService)
{
_testService = testService;
}
// GET: api/Tests
[HttpGet]
public IEnumerable<TestModel> GetTests()
{
return mapper.Map<IEnumerable<TestDTO>, IEnumerable<TestModel>>(_testService.GetAllTests());
}
}
[ApiController]
公共类TestsController:ControllerBase
{
专用只读ITestService(测试服务);
IMapper mapper=新的MapperConfiguration(cfg=>cfg.CreateMap()).CreateMapper();
公共测试控制器(ITestService testService)
{
_testService=testService;
}
//获取:api/测试
[HttpGet]
公共IEnumerable GetTests()
{
返回mapper.Map(_testService.GetAllTests());
}
}
测试服务
public class TestService : ITestService
{
IUnitOfWork Database { get; set; }
IMapper mapper = new MapperConfiguration(cfg => cfg.CreateMap<Test, TestDTO>()).CreateMapper();
public TestService(IUnitOfWork uow)
{
Database = uow;
}
public IEnumerable<TestDTO> GetAllTests()
{
return mapper.Map<IEnumerable<Test>, List<TestDTO>>(Database.Tests.GetAll());
}
}
公共类测试服务:ITestService
{
IUnitOfWork数据库{get;set;}
IMapper mapper=新的MapperConfiguration(cfg=>cfg.CreateMap()).CreateMapper();
公共测试服务(IUnitOfWork uow)
{
数据库=uow;
}
公共IEnumerable GetAllTests()
{
返回mapper.Map(Database.Tests.GetAll());
}
}
我知道,有很多像我这样的话题,但它们对我没有帮助。我已尝试添加
服务。AddTransient()代码>到我的Startup.cs,但它不起作用。您是否在Startup.cs中注册了TestService之前的IUnitOfWork?
可能是这样
看看这篇文章。它看起来与您遇到的问题相似。要解决此问题,我添加
services.AddDbContext<ApplicationContext>();
services.AddTransient<IUnitOfWork, EFUnitOfWork>();
services.AddTransient<ITestService, TestService>();
services.AddDbContext();
services.AddTransient();
services.AddTransient();
要启动.cs当我注册IUnitOfWork时,会出现新的错误:在尝试激活“KTS.DAL.Repositories.EFUnitOfWork”时,无法解析类型“KTS.DAL.EF.ApplicationContext”的服务。