如何使用 Autofac 属性Autowired() 进行依赖注入,如果 Web 应用程序同时具有 Mvc 和 WebA
本文关键字:应用程序 Web 如果 WebA Mvc 注入 Autowired 属性 Autofac 何使用 依赖 | 更新日期: 2023-09-27 18:35:40
我有一个同时包含 Mvc 和 WebApi 控制器的 Web 应用程序(1 个项目)。我正在尝试使用PropertiesAutoWired()注入Autofac的依赖项。我的 Mvc 控制器的属性正在注入,但 WebAPI 控制器的属性没有。
这是我的代码:
Global.asax:
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Logger.Logger.Initialize(Server.MapPath(string.Empty));
DependencyResolver.SetResolver(DependencyInjector.GetDependencyResolver(Assembly.GetExecutingAssembly()));
}
依赖注入器:
public static IDependencyResolver GetDependencyResolver(Assembly applicationAssembly)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(applicationAssembly).PropertiesAutowired(); //Mvc Controllers
builder.RegisterApiControllers(applicationAssembly).PropertiesAutowired(); //Api Controllers
DIContainer = RegisterServices(builder);
return new AutofacDependencyResolver(DIContainer);
}
注册方式如下:
builder.RegisterType<Concrete>()
.As<Abstraction>()
.PropertiesAutowired()
.EnableInterfaceInterceptors()
.InterceptedBy(typeof(LogInterceptor))
.InstancePerLifetimeScope();
每个控制器都定义了属性:
public class TestController : ApiController
{
public ITestComponent TestComponent { get; set; }
}
未设置 WebAPI 的依赖项解析程序。请点击链接获取解决方案。
Autofac - MVC 控制器和 Web API 控制器的依赖注入