2

控制器構造函數我有一個ASP.MVC 4個網站,還具有Web API 2控制器。我正在使用Unity.MVC for DI。 當我打這個電話從javascript它說,它不能創建控制器實例的API。如果我創建了一個默認的ctor,它會創建實例,但當然依賴項爲空,但至少我知道該部分正在工作。Unity.MVC不能解決我的參數

這裏是我的API構造函數:

public class ContactController : ApiController 
    { 
     IContactService service; 

     // dependency injection is being done here by Unity. look in UnityConfig where we register IContactSevice to ContactService. Whenever asp.net see's IContactService it now knows to make a new ContactService instance 
     // we do this for 2 reasons: 1) this makes unit testing possible where we can mock the IContactService and 2) this makes maintaining the code easier where we can change the contact service class we want to use later and we wouldn't have to change the code here in this controller 
     public ContactController(IContactService _service) 
     { 
      service = _service; 
     } 

這裏是UnityConfig.cs內(這是我自動生成當我的NuGet得到它,我填寫的依賴)。這在我啓動應用程序時會被調用。

public static void RegisterTypes(IUnityContainer container) 
     { 
      container.RegisterType<IContactService, ContactService>(); 
     } 

我在想什麼?

+0

的的WebAPI控制器有一個單獨的統一登記。我看到你正在使用_Unity.MVC_,還有一個_Unity.AspNet.WebApi_引導程序。 – Jasen

+0

啊我明白了。當我補充說它也創造了(所以在這種情況下覆蓋)UnityConfig.cs。你知道我是否可以混合2個1項目? – user441521

+0

你可以有兩個。我想你必須在導入第二個包之前單獨保存文件,然後手動合併這兩個文件。 – Jasen

回答

2

的的WebAPI控制器有一個單獨的統一登記。既然你已經在使用Unity.MVC包,你可以添加Unity.AspNet.WebApi引導程序。

由於配置自動替換,我會手動導入第二包然後將二者結合起來之前保存UnityConfig.cs的內容。但真正的區別在於單獨的Unity * Activator.cs文件。