DependencyResolver.SetResolver不工作

flu*_*kus 7 c# autofac asp.net-mvc-5

我正在尝试使用该Dependency.SetResolver方法在新应用程序上设置容器,并使用autofac与autofac mvc 5集成.

问题是设置解析器似乎没有做任何事情.将始终使用默认解析程序,并始终期望默认构造函数.

有任何想法吗?

编辑 - global.asax.cs我已将其简化为:

var b = new ContainerBuilder();  
b.RegisterType<UserInfo>().As<IUserSession>().InstancePerHttpRequest();  
var container = b.Build();  
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)

HomeController采用IUserSession其构造函数.抛出的异常是"No parameterless constructor defined for this object." Thrown from "System.Web.Mvc.DefaultControllerActivator.Create"

Ale*_*tin 18

你忘了注册你的控制器:

b.RegisterControllers(typeof(MvcApplication).Assembly);
Run Code Online (Sandbox Code Playgroud)

有关Autofac wiki页面的更多信息

  • 要使用RegisterControllers(),您需要为Autofac.Integration.Mvc添加using语句; (4认同)
  • 原始版本有这个,但它是this.GetType().汇编.问题是global.asax被编译到不同的程序集. (2认同)