C# 未注册的IServiceProvider

C# 未注册的IServiceProvider,c#,asp.net,asp.net-mvc,dependency-injection,simple-injector,C#,Asp.net,Asp.net Mvc,Dependency Injection,Simple Injector,当应用程序启动时,会发生错误 ImportExportController类型的构造函数包含参数 名称为“serviceProvider”,类型为IServiceProvider,但不是 注册的。请确保IServiceProvider已注册或更改 ImportExportController的构造函数 我的代码 public class ImportExportController : BaseController { private readonly IServiceProvider _

当应用程序启动时,会发生错误

ImportExportController类型的构造函数包含参数 名称为“serviceProvider”,类型为IServiceProvider,但不是 注册的。请确保IServiceProvider已注册或更改 ImportExportController的构造函数

我的代码

public class ImportExportController : BaseController
{
   private readonly IServiceProvider _serviceProvider;

   public ImportExportController(IServiceProvider serviceProvider)
   {
     _serviceProvider = serviceProvider;
   }
}
对于依赖项的注入,我使用的是简单的注入器

错误发生在容器中。Verify()

private static void Register(Container container)
{
   _container = container;
   container.Register<IXmlServices, XmlServices>();
   container.Verify();
}

专用静态无效寄存器(容器)
{
_容器=容器;
container.Register();
container.Verify();
}
我在这里使用的是_serviceProvider

foreach (var element in productsToImport)
{​​​​​​​
   using (var scope = _serviceProvider.CreateScope())
   {​​​​​​​
      var app = scope.ServiceProvider.GetService<IImportApp>();
      var task = Task.Run(() => app.ImportData(element, UserName, ImportID, PricesCurrencies));
      listTask.Add(task);
   }​​​​​​​
}​​​​​​​
Task.WaitAll(listTask.ToArray());
foreach(productsToImport中的var元素)
{​​​​​​​
使用(var scope=\u serviceProvider.CreateScope())
{​​​​​​​
var app=scope.ServiceProvider.GetService();
var task=task.Run(()=>app.ImportData(元素、用户名、ImportID、价格相关性));
添加(任务);
}​​​​​​​
}​​​​​​​
Task.WaitAll(listTask.ToArray());

您需要注册
IServiceProvider
,注册方式与注册
IXmlServices
相同

container.Register<IServiceProvider, ServiceProvider>();
container.Register();

有鉴于此,
ServiceProvider
是一个实现接口
IServiceProvider
的类,您需要注册
IServiceProvider
,方法与注册
IXmlServices
相同

container.Register<IServiceProvider, ServiceProvider>();
container.Register();

鉴于此,
ServiceProvider
是一个实现interface
IServiceProvider

Ack的类,您比我先确认一下。我回答了一半…:-)阿克,你赢了我。我回答了一半…:-)您想要注入的
IServiceProvider
的确切功能是什么?请说明它是如何使用的以及您的意图是什么。你问题的答案取决于这些细节。例如,您打算从中解析实例吗?您是否希望它将调用转发到简单注入器
容器
?为什么您的控制器需要服务定位器?您使用的是哪个简单的注入器版本?CreateScope是MS.DI的扩展方法。这不会创建一个简单的注入器范围,如果这是您的目标。但我仍然不清楚你们想要实现什么。也许这确实有帮助:但不管怎样,简单的注射器都不允许注射ISeviceProvider。相反,您应该注入
容器
。您想要注入的
IServiceProvider
的确切功能是什么?请说明它是如何使用的以及您的意图是什么。你问题的答案取决于这些细节。例如,您打算从中解析实例吗?您是否希望它将调用转发到简单注入器
容器
?为什么您的控制器需要服务定位器?您使用的是哪个简单的注入器版本?CreateScope是MS.DI的扩展方法。这不会创建一个简单的注入器范围,如果这是您的目标。但我仍然不清楚你们想要实现什么。也许这确实有帮助:但不管怎样,简单的注射器都不允许注射ISeviceProvider。相反,您应该插入
容器