我有一个webapi控制器,其中构造函数中有2个参数。我使用autofac作为DI容器。 RegisterAutofac()是在web api项目的global.asax中调用的函数
private static void RegisterAutofac()
{
var builder = new ContainerBuilder();
// Register the Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// get the first param via xml
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
// get the 2nd param directly
builder.Register(c => new Assets()).As<IAssets>().InstancePerLifetimeScope();
// Build the container.
var container = builder.Build();
// Create the depenedency resolver.
var resolver = new AutofacWebApiDependencyResolver(container);
// Configure Web API with the dependency resolver.
GlobalConfiguration.Configuration.DependencyResolver = resolver;
//Register Autofac ends
}
当我运行控制器时,我可以看到第一个参数为空,第二个参数具有有效值。在调试模式下,我可以验证第一个参数(使用container.Resolve&lt;&gt;())是否具有有效值。不知道为什么当autofac能够在global.asax中解析它时,它不会将依赖项作为有效对象传递给控制器。