C# Autofac不传递在web API中使用xml(反射API)解析的对象的实例
我有一个webapi控制器,其中构造函数中有2个参数。我使用autofac作为DI容器。RegisterAutofac是web api项目的global.asax中调用的函数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
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验证;}…是的,更新你的问题,而不是在评论中隐藏重要的东西。阅读它会给你一些很好的建议,告诉你如何在上面写好问题