0

所以我目前工作的項目,我們有1個MVC項目和5 MVC /網絡API項目爲一體的VS 2013解決方案的一部分。 MVC唯一項目被選爲啓動網站,因爲它將面向消費者。其餘5個項目由該MVC項目引用,該項目調用API控制器來獲取和推送數據。在多個MVC使用Unity引導程序項目

目前,我們在面向客戶的MVC網站上安裝了Unity Bootstrapper,Unity.MVC和Unity.WebAPI Nuget包,而當我們調用單個Web API項目時,DI工作得很好。

現在,還有一個要求,我們應該能夠單獨測試5個MVC/Web API項目,我們在其中創建測試.cshtml剃鬚刀視圖,測試調用API控制器的MVC控制器。現在,由於MVC/Web API項目正在單獨運行,而不是通過MVC網站調用,因此沒有IOC來連接依賴項。所以我將上面提到的Nuget包安裝到了5個項目中的每一個,並且連接了它們所需的依賴關係。現在每個單獨的項目都運行良好。但是,當我現在運行主MVC項目/網站時,它將引發所有引用的MVC/Web API項目中的Unity Bootstrappers,從而覆蓋先前實例化的Unity Container。所以基本上,最後一個MVC/Web API項目將Unity Container作爲該網站的DI容器。

有什麼辦法解決這個問題嗎?我應該爲每個Web API項目創建UnityExtensions,並在MVC項目中單獨連線它們嗎?

回答

0

我們的項目有同樣的問題,我們通過創造,我們剛剛創建的接口一個單獨的項目解決了它,並引導程序是在我們與映射到具體實現的接口解決方案的共同文件。這有助於測試以及程序的順利運行。