C# Autofac不传递在web API中使用xml(反射API)解析的对象的实例

C# Autofac不传递在web API中使用xml(反射API)解析的对象的实例,c#,asp.net-web-api,dependency-injection,autofac,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(Asse

我有一个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
}

当我运行控制器时,我可以看到第一个参数为null,第二个参数有一个有效值。在调试模式下,我可以使用container.Resolve验证第一个参数是否具有有效值。不确定当autofac能够在global.asax中解析依赖项时,为什么它不能将依赖项作为有效对象传递给控制器

xml看起来像什么?控制器是什么样子的?你必须提供一个完整的场景,否则很难帮助你。嗨,彼得,控制器是这样的。公共类资产控制器:ApiController{IAssets资产;IValidate验证;公共资产控制器资产{U资产,IValidate{U验证{asset=\U资产;验证=\U验证;}…是的,更新你的问题,而不是在评论中隐藏重要的东西。阅读它会给你一些很好的建议,告诉你如何在上面写好问题