在多个MVC项目中使用Unity Bootstrapper

时间:2013-11-14 10:16:15

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api unity-container

因此,在我目前正在开发的项目中,我们将1个MVC项目和5个MVC / Web API项目作为一个VS 2013解决方案的一部分。仅MVC项目被选为启动网站,因为它将面向消费者。其余5个项目由此MVC项目引用,该项目调用API控制器来获取和推送数据。

目前,我们在面向MVC网站的客户中安装了Unity Bootstrapper,Unity.MVC和Unity.WebAPI Nuget软件包,当我们调用单个Web API项目时,DI工作正常。

现在,还有一个要求,即我们应该能够单独测试5个MVC / Web API项目,在那里我们创建测试.cshtml razor视图,测试MVC控制器,它们调用API控制器。现在,由于MVC / Web API项目是单独运行的,而不是通过MVC网站调用,因此没有IOC可以连接依赖项。所以我在5个项目中的每一个上安装了上面提到的Nuget包,并连接了它们所需的依赖项。现在每个项目都运作良好。

但是,当我现在运行主MVC项目/网站时,它将在所有引用的MVC / Web API项目中启动Unity Bootstrappers,从而覆盖先前实例化的Unity容器。基本上,最后一个MVC / Web API项目为它的Unity容器提供了网站的DI容器。

有什么方法可以解决这个问题吗?我应该为每个Web API项目创建UnityExtensions,并在MVC项目中单独连接它们吗?

1 个答案:

答案 0 :(得分:0)

我们的项目遇到了同样的问题,我们通过创建一个单独的项目来解决它,我们刚创建了接口,而bootstrapper是解决方案中的一个公共文件,我们将接口映射到具体的实现。这有助于测试以及程序的顺利运行。