关于c#:使用Autofac,MVC5和OWIN进行依赖注入不起作用

Dependency injection with Autofac, MVC5 and OWIN not working

我很难将Autofac与MVC5和Owin集成在一起。看来MVC正在跳过AutofacMvc集成,并且仍在使用System.Web.Mvc.DefaultControllerFactory实例化控制器,从而抛出

1
No parameterless constructor defined for this object

有一篇很棒的文章
Alex Meyer-Gleaves致力于为Autofac中的MVC 5集成设置Owin支持。我已经遵循了这一要求,并下载了软件包,但是仍然无法正常工作。这是我的Startup.cs的样子:

1
2
3
4
5
6
7
8
public void Configuration(IAppBuilder app)
{
    var container = AutofacConfig.Register();
    app.UseAutofacMiddleware(container);  // 1 - setting up autofac middleware (Autofac.Integration.Owin.dll)
    app.UseAutofacMvc(); // 2 - passing on life time scope created in Owin onto MVC request (Autofac.Integration.Mvc.Owin)
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // 3 - setting dependency resolver for MVC (Autofac.Integration.Mvc)
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

我已经检查了我的服务是否已注册,如果我从构造函数中删除服务参数,则会成功调用我的路由。还有什么我可能会想念的?可能存在问题的任何提示将不胜感激。


显然,问题出在我忘记将控制器注册到Autofac的事实。添加此行解决了问题:

1
builder.RegisterControllers(Assembly.GetExecutingAssembly());