在web api和mvc之间共享Ioc和会话

时间:2015-07-07 08:28:00

标签: asp.net-mvc nhibernate asp.net-web-api

我正在将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使用相同的容器?

1 个答案:

答案 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);