Asp.net web api Autofac未解析WebAPI2控制器的构造函数参数
我正在尝试将Autofac for DI容器用于带有WebApi2和OWIN的Asp.Net MVCAP应用程序。My global.asax.cs在Asp.net web api Autofac未解析WebAPI2控制器的构造函数参数,asp.net-web-api,owin,autofac,autofac-configuration,Asp.net Web Api,Owin,Autofac,Autofac Configuration,我正在尝试将Autofac for DI容器用于带有WebApi2和OWIN的Asp.Net MVCAP应用程序。My global.asax.cs在应用程序\u Start()中没有任何内容。My startup.cs具有以下配置: public void Configuration(IAppBuilder app) { DependencyInjectionConfig.Configure(app); AreaRegistration.RegisterAllAreas();
应用程序\u Start()
中没有任何内容。My startup.cs具有以下配置:
public void Configuration(IAppBuilder app)
{
DependencyInjectionConfig.Configure(app);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
DependencyInjectionConfig.Configure是:
public static void Configure(IAppBuilder app)
{
var config = new HttpConfiguration(); //this means webapi controllers don't use DI container
//var config = GlobalConfiguration.Configuration; //this makes MVC view controllers fail to do anything
var builder = new ContainerBuilder();
var assm = Assembly.GetExecutingAssembly();
//MVC and WebAPI Controllers
builder.RegisterControllers(assm);
builder.RegisterApiControllers(assm);
WebApiConfig.Register(config);
//Model Binders
builder.RegisterModelBinders(assm);
builder.RegisterModelBinderProvider();
//Modules
builder.RegisterModule<AutofacWebTypesModule>();
//MVC Views
builder.RegisterSource(new ViewRegistrationSource());
//MVC and WebAPI Filters
builder.RegisterFilterProvider();
builder.RegisterWebApiFilterProvider(config);
//Finally, Any custom registrations
RegisterComponents(builder, assm);
/* My items show in the builder as expected at this point */
//build the container
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
//Special OWIN bits
app.UseAutofacMiddleware(container);
app.UseAutofacMvc();
app.UseAutofacWebApi(config);
app.UseWebApi(config);
}
例外情况是它找不到无参数构造函数(因为Autofac容器似乎正在休眠)。构造函数看起来像什么,参数类型是否已注册到容器中?根据您的注释添加了ApiController。此外,
注册表组件(生成器、assm)代码>调用是我所有类型注册的地方,当我快速查看生成器时,它们确实会出现。好吧。。。呵呵。我不知道。是否可以在Owin中打开跟踪以获取更多诊断信息?
public class MessagesController : ApiController
{
private IMesageHandler MessageHandler {get; set;}
public MessagesController(IMessageHandler messageHandler)
{
this.MessageHandler = messageHandler;
}
[HttpGet]
public string Get()
{
return "Hello World";
}
}