我正在将web api 2添加到现有的MVC 5应用程序中。
我们正在使用Unity和NHibernate会话。请求。 我们已经基于DefaultControllerFactory创建了一个UnityControllerFactory。 UnityControllerFactory在Application_Start中设置如下:
_controllerFactory = new UnityControllerFactory(_container); ControllerBuilder.Current.SetControllerFactory(_controllerFactory);
这不适用于web api,猜测我们需要基于接口IDependencyResolver实现统一解析器。
有没有办法为ApiController和Controller使用相同的容器?
答案 0 :(得分:0)
是的,之前我已经使用Autofac和Ninject做过类似的事情,不确定Unity的实际语法是什么,但是你需要在Application_Start
中提供类似的内容:
var container = new UnityContainer();
RegisterDependencies(container);
// Wire unity container with ASP.NET MVC
ControllerBuilder.Current.SetControllerFactory(new UnityControllerFactory(container));
// Wire unity container with Web Api
httpConfig.DependencyResolver = new UnityResolver(container);