问题描述
应用程序启动时发生错误
ImportExportController 类型的构造函数包含参数 名称为 'serviceProvider' 的 IServiceProvider 类型不是 挂号的。请确保 IServiceProvider 已注册,或更改 ImportExportController 的构造函数
我的代码
public class ImportExportController : BaseController
{
private readonly IServiceProvider _serviceProvider;
public ImportExportController(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
}
对于依赖项的注入,我使用的是 Simple Injector
错误发生在container.Verify();
private static void Register(Container container)
{
_container = container;
container.Register<IXmlServices,XmlServices>();
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());
解决方法
您需要像注册 IServiceProvider
一样注册 IXmlServices
。
container.Register<IServiceProvider,ServiceProvider>();
鉴于此,ServiceProvider
是一个实现接口 IServiceProvider
的类。