我已经使用SimpleInjector按照与here相同的方式设置了我的依赖注入。不幸的是,容器调用对象的RegisterMvcViewComponents
抛出异常:如何在.NET Core中注册IViewComponentDescriptorProvider?
为 型无此项服务“Microsoft.AspNetCore.Mvc.ViewComponents.IViewComponentDescriptorProvider” 已注册。
容器是否有注册提供者的相应方法?还是应该以其他方式完成?
的代码:
public class Startup
{
private Container _container = new Container();
public void ConfigureServices(IServiceCollection services)
{
services.InitializeTestData();
services.AddMvcCore();
services.AddSingleton<IControllerActivator>(new SimpleInjectorControllerActivator(_container));
services.AddSingleton<IViewComponentActivator>(new SimpleInjectorViewComponentActivator(_container));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSimpleInjectorAspNetRequestScoping(_container);
_container.Options.DefaultScopedLifestyle = new AspNetRequestLifestyle();
InitializeContainer(app);
_container.Verify();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routes =>
{
routes.MapRoute(
name: "Default",
template: "{controller=Home}/{action=Index}/{id?}"
);
});
}
private void InitializeContainer(IApplicationBuilder app)
{
_container.RegisterMvcControllers(app);
_container.RegisterMvcViewComponents(app);
_container.Register<IDbContext>(() => new DbContext("GuitarProject"));
_container.Register<IJournalEntryRepository, JournalEntryRepository>();
}
}
堆栈跟踪(异常的类型是InvalidOperationException
):
在 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(的IServiceProvider 提供商类型的serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T](IServiceProvider provider)at SimpleInjector.SimpleInjectorAspNetCoreMvcIntegrationExtensions.RegisterMvcViewComponents(容器 容器,IApplicationBuilder applicationBuilder)在 ProjectX.Startup.InitializeContainer(IApplicationBuilder应用)
你可以发布完整的堆栈跟踪吗? – Steven
@Steven堆栈跟踪添加。 – Kapol