Asp.net 如何使用另一个解决方案.Net Core的提供程序?
这是我的解决办法Asp.net 如何使用另一个解决方案.Net Core的提供程序?,asp.net,asp.net-core,.net-core,asp.net-core-mvc,Asp.net,Asp.net Core,.net Core,Asp.net Core Mvc,这是我的解决办法 public class HomeController : Controller { private readonly IEventProvider _eventProvider; public HomeController(IEventProvider eventProvider) { _eventProvider = eventProvider ?? throw new ArgumentNul
public class HomeController : Controller
{
private readonly IEventProvider _eventProvider;
public HomeController(IEventProvider eventProvider)
{
_eventProvider = eventProvider ?? throw new ArgumentNullException(nameof(eventProvider));
}
public Task<List<EventModel>> Index()
{
return this._eventProvider.GetEvents(10, 1, 0, null, null, null);
}
}
公共类HomeController:控制器
{
私有只读IEventProvider\u事件提供程序;
公共家庭控制器(IEventProvider事件提供程序)
{
_eventProvider=eventProvider??抛出新的ArgumentNullException(nameof(eventProvider));
}
公共任务索引()
{
返回此。_eventProvider.GetEvents(10,1,0,null,null);
}
}
命名空间WebApplication1
{
公营创业
{
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext();
服务.额外性()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
...
services.addScope();
services.addScope();
services.addScope();
services.addScope();
}
...
}
}
如果我尝试从控制器联系提供商,则会出现错误
我是初学者,所以不要严格评判
[在此处输入图像描述][3]
请告诉我如何解决此问题据我所知,您已在命名空间WebApplication1中注册了IEventProvider。但您的家庭控制器位于GoldishCMS项目中。尝试将控制器移动到正确的项目中,并在那里注册DEP。
并将services.AddControllers()添加到Startup.cs您必须在GoldishCMS项目启动中注册IEventProvider。就像您在WebApplication1项目中所做的那样 只需将下面的代码添加到GoldishCMS中的Startup.cs
...
services.AddScoped<IEventProvider, EventProvider>();
...
。。。
services.addScope();
...
但是你可以阅读更多关于和的文章
祝您有愉快的一天。我尝试了这个方法,但没有收到任何帮助。错误消息:“有些服务无法构建(验证服务描述符“ServiceType:WebApplication1.Providers.Interfaces.IEventProvider生存期:作用域实现类型:WebApplication1.Providers.EventProvider”时出错):尝试激活时无法解析类型“GoldishCMS.Context.ApplicationDbContext”的服务…”您的事件提供者使用ApplicationDbContext?是的,在提供者中,我访问上下文并获取数据,您也必须在GoldishCMS项目中注册ApplicationDbContext(b)web应用程序1的数据层
...
services.AddScoped<IEventProvider, EventProvider>();
...