Autofac不会在Web API中使用xml(Refection API)传递对象实例

时间:2014-10-22 04:15:29

标签: c# asp.net-web-api dependency-injection autofac

我有一个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中解析它时,它不会将依赖项作为有效对象传递给控制器​​。

0 个答案:

没有答案