在 web api 和 mvc 之间共享 Ioc 和会话
Sharing Ioc and session between web api and mvc
我正在将 Web api 2 添加到现有的 MVC 5 应用程序。
我们正在使用 Unity 和 NHibernate 会话。要求。
我们基于 DefaultControllerFactory 创建了一个 UnityControllerFactory。 UnityControllerFactory 在 Application_Start 中设置如下:
_controllerFactory = new UnityControllerFactory(_container);
ControllerBuilder.Current.SetControllerFactory(_controllerFactory);
这不适用于网络 api,猜测我们需要基于接口 IDependencyResolver.
实现统一解析器
有没有办法让 ApiController 和 Controller 使用同一个容器?
是的,我之前用 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);
我正在将 Web api 2 添加到现有的 MVC 5 应用程序。
我们正在使用 Unity 和 NHibernate 会话。要求。 我们基于 DefaultControllerFactory 创建了一个 UnityControllerFactory。 UnityControllerFactory 在 Application_Start 中设置如下:
_controllerFactory = new UnityControllerFactory(_container); ControllerBuilder.Current.SetControllerFactory(_controllerFactory);
这不适用于网络 api,猜测我们需要基于接口 IDependencyResolver.
实现统一解析器有没有办法让 ApiController 和 Controller 使用同一个容器?
是的,我之前用 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);