gpt4 book ai didi

c# - Autofac - MVC Controller 和 Web Api Controller 的依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-30 13:45:01 24 4
gpt4 key购买 nike

我在同一项目中有 MVC Controller (在 Controllers 文件夹中)和 Web Api Controller (在 Api 文件夹中):这是文件夹结构:

  • Controller
    • 产品总监
  • 应用程序接口(interface)
    • 产品总监

这是我的 Bootstrap 方法:

        private static void SetAutofacContainer()
{
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterControllers(Assembly.GetExecutingAssembly());
//builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
builder.RegisterType<DbFactory>().As<IDbFactory>().InstancePerRequest();

// Repositories
builder.RegisterAssemblyTypes(typeof(ProductRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces().InstancePerRequest();

IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}

我无法将存储库注入(inject)我的 Web Api Controller 。这是我得到的异常:

An error occurred when trying to create a controller of type 'ProductController'. Make sure that the controller has a parameterless public constructor.

我做错了什么?

最佳答案

您还没有设置 Web API 的 GlobalConfiguration.Configuration.DependencyResolver;您只需设置 MVC 的 DependencyResolver

添加以下行:

GlobalConfiguration.Configuration.DependencyResolver =
new AutofacWebApiDependencyResolver(container);

关于c# - Autofac - MVC Controller 和 Web Api Controller 的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com