DependencyResolver.SetResolver 不工作 [英] DependencyResolver.SetResolver Not working
问题描述
我正在尝试使用 Dependency.SetResolver
方法并使用 autofac 与 autofac mvc 5 集成在新应用上设置容器.
I'm trying to set the container on a new app using the Dependency.SetResolver
method and using autofac with autofac mvc 5 integration.
问题是设置解析器似乎没有任何作用.将始终使用默认解析器,并且始终期望使用默认构造函数.
The problem is that setting the resolver doesn't appear to do anything. The default resolver will always be used and will always expect a default constructor.
有什么想法吗?
编辑 - global.asax.cs
,我已将其简化为:
Edit - The global.asax.cs
, I've simplified it down to:
var b = new ContainerBuilder();
b.RegisterType<UserInfo>().As<IUserSession>().InstancePerHttpRequest();
var container = b.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
并且 HomeController
在其构造函数中接受一个 IUserSession
.抛出的异常是没有为此对象定义无参数构造函数."从System.Web.Mvc.DefaultControllerActivator.Create"抛出
And HomeController
takes an IUserSession
in its constructor. The exception thrown is "No parameterless constructor defined for this object." Thrown from "System.Web.Mvc.DefaultControllerActivator.Create"
推荐答案
您忘记注册控制器:
b.RegisterControllers(typeof(MvcApplication).Assembly);
有关 Autofac 的更多信息维基页面
More info on Autofac wiki page
这篇关于DependencyResolver.SetResolver 不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!