我想将Modules
文件中的Data
和autofac.json
属性注入名称为ApiController
的{{1}}
我读了这个页面:
http://docs.autofac.org/en/latest/configuration/xml.html但我的属性仍然是DataController
,所以我一定做错了。谁能帮帮我?
我的NULL
已经有一个构造Controller
的构造函数,因此这些属性是额外的。
这是我现在的ILog
配置:
Autofac
这是我的var builder = new ContainerBuilder();
builder.RegisterApiControllers(typeof(Startup).Assembly); // to register all ApiControllers at once
// Use the Microsoft Configuration Extensions together with Autofac to create an Autofac Module
var autofacConfig = new ConfigurationBuilder();
autofacConfig.AddJsonFile("autofac.json");
var autofacModule = new ConfigurationModule(autofacConfig.Build());
builder.RegisterModule(autofacModule);
var container = builder.Build();
var httpConfigurationConfig = new HttpConfiguration { DependencyResolver = new AutofacWebApiDependencyResolver(container) };
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(httpConfigurationConfig );
app.UseWebApi(httpConfigurationConfig );
:
autofac.json
我的{
"components": [
{
"type": "Web.Controllers.DataController, Web",
"injectProperties": true,
"properties": {
"Modules": {
"Module1": "http://localhost:12345/",
"Module2": "http://localhost:12346/"
},
"Data": {
"Item1": "Declarations",
"Item2": "Payments"
}
}
}
]
}
看起来像这样:
Controller
答案 0 :(得分:0)
我看不到你在WebApi管道中插入容器的位置了吗?
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
此外,当您想要属性注入时,您需要使用方法PropertiesAutowired()
builder.RegisterApiControllers(typeof(Startup).Assembly).PropertiesAutowired();
答案 1 :(得分:0)
您提供的代码似乎没问题 - 我复制了它并且工作正常。
你必须记住在创建组件之后注入了属性,所以在你的控制器构造函数中这些属性是null
,但是当你点击控制器方法时,它们会被正确填充您在json配置文件中提供的数据。