Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用另一个解决方案.Net Core的提供程序?_Asp.net_Asp.net Core_.net Core_Asp.net Core Mvc - Fatal编程技术网

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>();
   ...