【发布时间】:2019-12-20 12:24:15
【问题描述】:
我在测试 WebAPI 项目时遇到依赖注入错误
InvalidOperationException:尝试激活“EventsAPI.Controllers.EventsController”时无法解析“EF_Events.Models.EventDBContext”类型的服务。
我的解决方案中有两个独立的项目。 EF 项目和引用 EF 项目的 API 项目。
EventsController.cs(在 API 项目中)
public class EventsController : ControllerBase
{
private readonly Services.IEventService _service;
private readonly EventDBContext _eventContext;
private readonly IEventRepository _eventRepository;
public EventsController(EventDBContext context)
{
_eventContext = context;
_eventRepository = new EventRepository(_eventContext);
_service = new Services.EventService(_eventRepository);
}
// GET api/values
[HttpGet]
public ActionResult Get()
{
// return new string[] { "value1", "value2" };
var events = _service.GetAllEvents();
return Ok(events);
}
}
EventService.cs(在 API 项目中)
namespace EventsAPI.Services
{
public class EventService : IEventService
{
private readonly IEventRepository _rep;
public EventService(IEventRepository eventRepository)
{
_rep = eventRepository;
}
public List<Event> GetAllEvents()
{
return _rep.GetAllEvents();
}
//public Event GetEventDetail(int id)
//{
// return _rep.GetEventDetail(id);
//}
}
}
Startup.cs(在 EF 项目中)
services.AddDbContext<EventDBContext>
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IEventRepository, EventRepository>();
EventRepository.cs(在 EF 项目中)
public class EventRepository : IEventRepository
{
private readonly EventDBContext _eventContext;
public EventRepository(EventDBContext context)
{
_eventContext = context;
}
public List<Event> GetAllEvents()
{
return _eventContext.Events.ToList();
}
}
不知道我做错了什么;我在这里和其他网站上检查了几篇文章。看起来我的 Startup.cs 是正确的,但它只是不工作。
【问题讨论】:
-
确切的错误是这个 InvalidOperationException: Unable to resolve service for type 'EF_Events.Models.EventDBContext' while trying to activate 'EventsAPI.Controllers.EventsController'。
-
DefaultConnection是一个有效的连接字符串吗? -
是的,它是有效的。我能够生成数据库。
-
你有不止一个类叫
EventDBContext? -
我还要说,您可能需要尽快将整个项目放入 github 存储库中,因为此时它可能是任何东西:\
标签: c# asp.net-core dependency-injection asp.net-core-webapi